用于.NET 4.0框架的EXIF库

时间:2011-08-19 22:23:45

标签: c# .net exif

我搜索过这个主题,但我能找到的唯一合适的主题是2008年,因此我的新问题。

我正在研究使用C#.Net 4.0语言开发程序。我的程序的目的是从jpegs(制造商,模型,地理位置信息等)中提取EXIF信息,然后将其填充到MySql / Sql服务器数据库中。

有人可以推荐任何适合此项目的好库吗?我也会寻找相机序列号(我知道这在制造商之间有所不同),但是如果有人知道任何现有的库来解决这个问题,那将是最有帮助的。

感谢并享受周末

3 个答案:

答案 0 :(得分:7)

metadata-extractor 项目自2002年以来一直很活跃,适用于Java,现在可用于.NET 3.5及更高版本。还有一个PCL版本。

  • 开源(Apache 2.0)
  • 经过严格测试和广泛使用
  • 支持多种图像类型(JPEG,TIFF,PNG,WebP,GIF,BMP,ICO,PCX ......)
  • 支持许多元数据类型(Exif,IPTC,XMP,JFIF,...)
  • 支持许多制造商特定领域(佳能,尼康,......)
  • 非常快(完全处理约400张图像,总计1.33GB,约3秒),内存消耗低

可通过NuGetGitHub获取。

样本用法:

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}");

(披露:我维护这个图书馆)

答案 1 :(得分:6)

这个CodeProject文章是在上个月编写的,它的API比其他一些.NET EXIF阅读器有了很大的改进:

http://www.codeproject.com/Articles/36342/ExifLib-A-Fast-Exif-Data-Extractor-for-NET-2-0

也可通过Nuget获取,并获得CPOL许可。

答案 2 :(得分:3)

对于基本的EXIF信息(制造商,相机型号,时间,光圈等),我会看一下System.Drawing.Image类 - 特别是PropertiesItems集合。

这门课有些缺点。它需要在检索EXIF信息之前将整个图像加载到内存中(即它有点慢)。它也不处理从相机到相机不一致的所有供应商特定字段。

Image.PropertyItems

MSDN: Reading Image Metadata

PropertyItem.Id

我非常成功地收集了有关我的照片集的信息(使用各种品牌和型号的十几种不同数码相机拍摄的数万张照片)。