1

我开发了一个 Silverlight 应用程序,它需要在客户端压缩 JPEG 图像。我一直在使用一个名为FJCore的库来实现这个目标。

然而,我遇到的最大问题之一是,此工具包要求您首先将 JPEG 转换为 WriteableBitmap,从而剥离与 JPEG 相关的所有元数据,例如 EXIF、XMP、JFIF 等。我已经修改了 FJCore 库的源以持久化 EXIF,压缩图像,然后重新附加 EXIF 数据。此过程有效,但会丢失其他类型的元数据信息。

我不必实现保存和写入 JPEG 格式存在的每种不同类型的元数据的函数,而是寻找一种简化的方法,允许我提取所有元数据,无论类型或格式如何,使用 FJCore 工具包压缩/调整该图像的大小,然后重新附加所有以前保存的元数据。一些可以帮助我实现目标的方向或示例代码将不胜感激。请记住,这是一个 Silverlight 应用程序,因此我必须使用这些 .NET 库。

谢谢你。

4

1 回答 1

1

您可以使用 FJCore 又名 ImageTools 来做到这一点。您需要做的就是在第 212 行添加:

// Exif.  Do something?
headers.Add(header);

https://github.com/briandonahue/FluxJpeg.Core/blob/master/FJCore/Decoder/JpegDecoder.cs

并确保在调整大小时复制这些标题:

jpegOut = new DecodedJpeg(
    new ImageResizer(jpegIn.Image)
        .Resize(320, ResamplingFilters.NearestNeighbor),
    jpegIn.MetaHeaders); // Retain EXIF details

重新编译,你应该很高兴。

于 2014-06-21T23:52:16.663 回答