4

我正在尝试使用 System.Drawing.Image.GetPropertyItem(0x0112) 读取方向 Exif 值。

这在 Windows 7 和 Windows 2008 R2 上运行良好,但在 Windows XP / Windows Server 2003 上失败(出现“无法找到属性”错误)。

在 Windows XP / 2003 上,如果我遍历可用属性(使用 System.Drawing.Image 的 PropertyItems 属性),我只会得到 0x5090(PropertyTagLuminanceTable)和 0x5091(PropertyTagChrominanceTable)

在 Windows 7 / Windows 2008 中使用完全相同的图像,我得到 18 个属性,其中一个是 0x0112。

我怀疑这可能与 Vista 和更高版本的 Windows 具有更新版本的 GDI+ 有关。有没有办法让它在 Windows XP / 2003 上运行,而不必编写代码来读取和写入 Exif 数据?

4

1 回答 1

1

NuGet 上有一个名为ExifReader的库和随附CodeProject 文章。

以下代码可用于获取方向,您可以使用 ExifTags 的其他枚举来获取其他元数据:

object result;

var reader = new ExifReader("c:\\temp\\test\\sample.jpg");
reader.GetTagValue(ExifTags.Orientation, out result);

var orientation = Convert.ToInt32(result);

我已经使用 .Net 4 在 Windows XP 32 位 SP3 上使用此图像对此图像进行了测试,它返回的方向为 1,这似乎是正确的。

于 2013-10-29T14:30:36.427 回答