C#检索佳能特定EXIF数据

时间:2010-04-25 06:40:35

标签: c# .net exif

我编写了一个应用程序,通过.Net的System.Drawing.Image类中公开的PropertyItems从图像中读取基本的EXIF数据。但是,我无法通过这些属性检索佳能特定的EXIF数据。如何阅读这些信息?我知道它存在于文件中,因为Photoshop会读取它。

6 个答案:

答案 0 :(得分:3)

我刚才发现了这个,但还没有使用它。看起来它有制造商特定的信息。

http://renaud91.free.fr/MetaDataExtractor/

<强>更新

自2002年以来,元数据提取器项目一直活跃在Java上,现在可用于.NET。它全面支持佳能的制造商以及爱克发,卡西欧,爱普生,富士,柯达,京瓷,徕卡,美能达,尼康,奥林巴斯,松下,宾得,三洋,Sigma / Foveon以及索尼相机和扫描仪。

您可以在此处浏览多个佳能(和其他)相机图像的示例输出。

该库可通过NuGet或GitHub获得。

样本用法:

IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path);

foreach (var directory in directories)
foreach (var tag in directory.Tags)
{
    Console.Out.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}");
}

在此处查看更新的答案:C# Retrieve Canon Specific EXIF Data

答案 1 :(得分:2)

如果您正在针对框架(或更高版本)的v3进行编译,则可以使用BitmapSource class加载图像,Metadata property通过{{3}}公开EXIF元数据。这样可以更加紧密地连接到图片中的EXIF信息,尽管制作者的注释是特定的,需要进一步解码。

答案 2 :(得分:1)

BCL中没有任何内容可以帮助EXIF。

查看this SO问题和答案(.Net的最佳EXIF库是什么?)。您可以使用几个商业和开源库来获取EXIF数据。

答案 3 :(得分:1)

metadata-extractor 项目自2002年以来一直很活跃,现在可用于.NET。它全面支持佳能的制造商以及来自爱克发,卡西欧,爱普生,富士,柯达,京瓷,徕卡,美能达,尼康,奥林巴斯,松下,宾得,三洋,Sigma / Foveon以及索尼相机和扫描仪的制造商。

您可以浏览多个佳能(和其他)相机图像here的示例输出。

该库可通过NuGetGitHub获取。

样本用法:

IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path);

foreach (var directory in directories)
foreach (var tag in directory.Tags)
{
    Console.Out.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}");
}

请注意,Mark Redman's answer中的lib是多年前我的Java库的过时端口。我现在维护C#和Java项目以实现功能奇偶校验。

答案 4 :(得分:0)

如果它们是RAW文件,您可以try using dcraw.net来获取信息。

答案 5 :(得分:0)

几个月前我在C#中编写了一个取证工具,并使用Phil Harvey的EXIF Tool从照片中获取EXIF数据。是的,这是一个PERL库,但它很容易安装并集成到我的C#应用​​程序中。