6

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

4

6 回答 6

3

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

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

更新:

元数据提取器项目自 2002 年以来一直在 Java 中运行良好,现在可用于 .NET。它全面支持佳能 makernotes 以及 Agfa、Casio、Epson、Fujifilm、Kodak、Kyocera、Leica、Minolta、Nikon、Olympus、Panasonic、Pentax、Sanyo、Sigma/Foveon 和 Sony 相机和扫描仪。

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

该库可通过 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

于 2010-04-25T07:48:35.700 回答
2

如果您正在针对框架的 v3(或更高版本)进行编译,那么您可以使用BitmapSource加载图像,该类通过Metadata属性公开 EXIF 元数据。这与图片中的 EXIF 信息有更紧密的联系,尽管制作者注释是特定的,需要进一步解码。

于 2010-04-25T07:11:24.247 回答
2

数据提取器项目自 2002 年以来一直在 Java 中运行良好,现在可用于 .NET。它全面支持佳能 makernotes 以及 Agfa、Casio、Epson、Fujifilm、Kodak、Kyocera、Leica、Minolta、Nikon、Olympus、Panasonic、Pentax、Sanyo、Sigma/Foveon 和 Sony 相机和扫描仪。

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

该库可通过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 的答案中的 lib 是多年前我的 Java 库的一个过时端口。我现在维护 C# 和 Java 项目以实现功能对等。

于 2015-09-24T21:54:14.623 回答
1

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

看看这个SO 问题和答案(What is the best EXIF library for .Net?)。有几个商业和开源库可用于获取 EXIF 数据。

于 2010-04-25T06:46:08.117 回答
1

如果它们是 RAW 文件,您可以尝试使用 dcraw.net来获取信息。

于 2011-01-07T04:34:15.237 回答
0

I wrote a forensic tool a few months ago in C# and used Phil Harvey's EXIF Tool to get the EXIF data from photographs. Yep, it's a PERL library but it was really easy to install and integrate into my C# application.

于 2014-01-27T14:19:06.230 回答