我开发了一个需要在客户端压缩JPEG图像的Silverlight应用程序。我一直在使用名为FJCore的库来实现这一目标。
然而,我遇到的最大问题之一是,此工具包要求您首先将JPEG转换为WriteableBitmap,这将剥离与JPEG相关的所有元数据,如EXIF,XMP,JFIF等。我修改了FJCore库的源代码以保留EXIF,压缩图像,然后重新附加EXIF数据。此过程有效,但会丢失其他类型的元数据信息。
我不是必须实现一个保存和写入JPEG格式存在的每种不同类型元数据的函数,而是在寻找一种简化的方法,它允许我提取所有元数据,无论其类型或格式如何,都使用FJCore工具包用于压缩/调整图像大小,然后重新附加所有以前保存的元数据。我们将非常感谢能够帮助我实现目标的一些方向或示例代码。请记住,这是一个Silverlight应用程序,因此我必须使用这些.NET库。
谢谢。
答案 0 :(得分:1)
您可以使用FJCore aka 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
重新编译,你应该好好去。