4

我想使用 System.Drawing.Image.Save 或使用 .NET 框架 v3.5 的 C# 应用程序中的类似方法以 EXIF 格式保存图像。MSDN 文档将 EXIF 列为 ImageFormat 的一个选项。但是,它似乎不受支持 - 至少在我不知道某些配置的情况下不支持。当我通过 ImageCodecInfo.GetImageEncoders() 枚举内置编码器时,不包括 EXIF。(在我的机器(Vista Ultimate x64)上内置的编码器是:BMP、JPEG、GIF、TIFF 和 PNG。)如果我使用 ImageFormat.Exif 属性保存图像,我只需获得默认的 PNG 格式。

如何使用 .NET 3.5 以 EXIF 格式保存图像?

4

2 回答 2

4

EXIF 本身不是一种图像文件格式,而是一种在 JPEG 图像中发现的元数据格式,符合 JEITA 指定的 DSC(数码相机)标准。

GDI+(即 Microsoft .NET Framework)允许您通过 Image.PropertyItems 读取/写入元数据图像属性,但是 GDI+ 公开的 EXIF 属性非常麻烦,并且不会按照您期望的方式转换值。实际上需要做很多工作才能本地读取/写入这些值(例如,您需要根据 JEITA 规范解压缩包含特殊编码值的二进制字段)。

可以在http://code.google.com/p/exif-utils/找到实现所有标准 EXIF 属性的直接开源库。这可能是最简单的方法。请参阅简单的包含演示,它读取文件,打印出所有 EXIF 属性,然后将属性添加到图像。

于 2009-07-12T23:33:13.853 回答
0

你见过吗:Lossless JPEG Rewrites in C#

于 2009-03-31T08:25:38.220 回答