我正在寻找简单直接的解决方案来访问.Net 中 jpeg 图像的 EXIF 信息。有人有这方面的经验吗?
7 回答
如果您愿意使用开源库,我可以谦虚地推荐一个我自己的创作吗?
元数据提取器项目自 2002 年以来一直在 Java 中运行良好,现在可用于 .NET。
- 开源(Apache 2.0)
- 经过大量测试和广泛使用
- 支持多种图像类型(JPEG、TIFF、PNG、WebP、GIF、BMP、ICO、PCX...)
- 支持多种元数据类型(Exif、IPTC、XMP、JFIF、...)
- 支持许多制造商特定领域(佳能、尼康……)
- 非常快(在约 3 秒内完全处理约 400 张图像,总计 1.33GB),内存消耗低
- 为 .NET 3.5、.NET 4.0+ 和 PCL 构建
示例用法:
IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path);
foreach (var directory in directories)
foreach (var tag in directory.Tags)
Console.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}");
如果您正在针对框架的 v3(或更高版本)进行编译,则可以使用BitmapSource
class加载图像,该类通过Metadata
属性公开 EXIF 元数据
一个新的非常快的库是ExifLib—— Simon McKenzie的 .NET 2.0 的快速 Exif 数据提取器。我最终使用了这个,代码易于使用和理解。我将它用于根据拍摄日期重命名的应用程序。我想知道这样的应用程序已经写了多少次了。
我的提示:确保在完成对 ExifReader 对象或文件保持打开状态后调用 Dispose。
我喜欢Atalasoft 的 DotImage Photo,但它是一个闭源解决方案,每个开发许可证的成本约为 600。
您还可以查看Codeplex 的 DTools,这是一个旨在补充标准 Fx 的开源框架。它包括一些与 Exif 相关的类。
看看这个元数据提取器。它是用 Java 编写的,但也已移植到 C#。我已经使用 Java 版本编写了一个小实用程序来根据日期和模型标签重命名我的 jpeg 文件。非常容易使用。
几年前,我与 Omar Shahine 一起创建了一个小型 JPEG EXIF 应用程序来处理 JPEG EXIF 文件,称为 JpegHammer。
他从该项目中提取了一个库并将其命名为 PhotoLibrary,它是 EXIF 2.2 标签的简单 .NET 包装器。不幸的是,GotDotNet 站点已经消失,CodePlex 没有它,Omar 的网站链接不起作用,我也没有副本了。
但是,如果您可以在 Google 周围进行挖掘,也许您会找到它,它会为您解决问题。