【问题标题】:C# Retrieve Canon Specific EXIF DataC# 检索 Canon 特定的 EXIF 数据
【发布时间】:2016-01-03 22:22:39
【问题描述】:

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

【问题讨论】:

    标签: c# .net exif


    【解决方案1】:

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

    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

    【讨论】:

    • 我可以验证这非常有效!许多制造商将大部分有用的 Exif 数据存储在 Makernote 字段中。这个工具将所有这些解析成一个漂亮的、对 XML 友好的、充满 Exif 标记的字典。
    • 这是我的 metadata-extractor 项目的过时端口。我现在维护一个具有更多功能和许多错误修复的官方 C# 版本。请参阅my answer 了解更多信息。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      您可以浏览多个佳能(和其他)相机图像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 中的库是我多年前的 Java 库的过时端口。我现在维护 C# 和 Java 项目以实现功能对等。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

            • 嗨,markp3rry!,我也在处理同类型的项目。我可以获取图片的 EXIF 数据,但我还需要 APP1 格式的数据,您是否也获取了该数据?如果是,请您在这里分享如何获取该数据?
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-01-19
            • 2017-10-17
            • 1970-01-01
            • 2014-01-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多