C# 在Silverlight中读取和写入所有JPEG元数据
我开发了一个Silverlight应用程序,需要在客户端压缩JPEG图像。我一直在使用一个名为的库来实现这个目标 然而,我遇到的最大问题之一是,该工具包要求您首先将JPEG转换为可写位图,该位图将删除与JPEG相关的所有元数据,如EXIF、XMP、JFIF等。我修改了FJCore库的源代码,以保留EXIF,压缩图像,然后重新连接EXIF数据。此过程可以工作,但会丢失其他类型的元数据信息 我不必实现保存和写入JPEG格式中存在的每种不同类型元数据的功能,而是寻找一种简化的方法,允许我提取所有元数据,无论其类型或格式如何,使用FJCore toolkit压缩/调整图像大小,然后重新附加以前保存的所有元数据。如果有一些指导或示例代码可以帮助我实现我的目标,我将不胜感激。请记住,这是一个Silverlight应用程序,因此这些.NET库是我必须使用的C# 在Silverlight中读取和写入所有JPEG元数据,c#,image,silverlight,metadata,exif,C#,Image,Silverlight,Metadata,Exif,我开发了一个Silverlight应用程序,需要在客户端压缩JPEG图像。我一直在使用一个名为的库来实现这个目标 然而,我遇到的最大问题之一是,该工具包要求您首先将JPEG转换为可写位图,该位图将删除与JPEG相关的所有元数据,如EXIF、XMP、JFIF等。我修改了FJCore库的源代码,以保留EXIF,压缩图像,然后重新连接EXIF数据。此过程可以工作,但会丢失其他类型的元数据信息 我不必实现保存和写入JPEG格式中存在的每种不同类型元数据的功能,而是寻找一种简化的方法,允许我提取所有元数据
谢谢。您可以使用FJCore又名ImageTools来完成此操作。您只需在第212行添加以下内容:
// Exif. Do something?
headers.Add(header);
并确保在调整大小时复制这些标题:
jpegOut = new DecodedJpeg(
new ImageResizer(jpegIn.Image)
.Resize(320, ResamplingFilters.NearestNeighbor),
jpegIn.MetaHeaders); // Retain EXIF details
重新编译后,您就可以开始了。您可以使用FJCore又名ImageTools来完成此操作。您只需在第212行添加以下内容:
// Exif. Do something?
headers.Add(header);
并确保在调整大小时复制这些标题:
jpegOut = new DecodedJpeg(
new ImageResizer(jpegIn.Image)
.Resize(320, ResamplingFilters.NearestNeighbor),
jpegIn.MetaHeaders); // Retain EXIF details
重新编译后,您应该可以开始了。这正是我18个月前所做的。但是,是的,谢谢你为我更新这个问题。我可能应该自己做那件事。谢谢,太棒了!我现在正在GitHub上分叉这个库,并合并我的修复程序(我还有另一个)。希望每个人都能很快从这些修复中受益。GitHub fork有一个Nuget包这正是我18个月前做的事情。但是,是的,谢谢你为我更新这个问题。我可能应该自己做那件事。谢谢,太棒了!我现在正在GitHub上分叉这个库,并合并我的修复程序(我还有另一个)。希望每个人都能很快从这些修复中受益。GitHub fork有一个Nuget包