为什么我无法从图像中检索EXIF属性?

时间:2016-02-04 08:59:53

标签: c# .net jpeg exif

我有一个图像,其中包含一些属性,我可以在资源管理器的属性对话框中看到:

Screen shot of the image properties

但是当我尝试使用MSDN here

上列出的属性信息检索它们时
var propItem = image.GetPropertyItem(0x010F); // PropertyTagEquipMake = 0x010F
var equipmentMake = Encoding.ASCII.GetString(propItem.Value);

propItem = image.GetPropertyItem(0x0110); // PropertyTagEquipModel = 0x0110
var equipmentModel = Encoding.ASCII.GetString(propItem.Value);

我通常会返回两个值,但是对于某些文件我得到了回复,但搜索模型返回ArgumentException属性无法找到。

迭代图像上的属性,如下所示:

foreach (var prop in image.PropertyItems)
{
    Console.WriteLine("{0}\t:\t{1}\t:\t{2}\t:\t{3}", prop.Id, prop.Len, prop.Type, Encoding.UTF8.GetString(prop.Value));
}

(基于this文章)

显示我的图像确实缺少模型属性。

是什么给出的?元数据是否以我应该寻找的其他格式存储?

2 个答案:

答案 0 :(得分:1)

可能是这个文件中的相机型号不是作为exif存储,而是作为xmp或特定相机标签之类的其他标签存储。例如,您可以在http://regex.info/exif.cgi上查看此内容。

在这种情况下,我可以推荐Phil Harvey(http://www.sno.phy.queensu.ca/~phil/exiftool/)出色的ExifTool。

答案 1 :(得分:0)

您可以尝试使用MetadataExtractor库。它支持许多不同类型的元数据(Exif,IPTC,JFIF,XMP ......)以及多种图像和视频格式。

可在NuGet上使用。

如果您可以分享您的图片,我可以帮助您进一步诊断此问题。