我编写了一个应用程序,通过.Net的System.Drawing.Image类中公开的PropertyItems从图像中读取基本的EXIF数据。但是,我无法通过这些属性检索佳能特定的EXIF数据。如何阅读这些信息?我知道它存在于文件中,因为Photoshop会读取它。
答案 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的示例输出。
样本用法:
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)