在Silverlight中读取和写入所有JPEG元数据

时间:2013-01-17 12:25:47

标签: c# image silverlight metadata exif

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

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

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

谢谢。

1 个答案:

答案 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

重新编译,你应该好好去。

相关问题