从JPG读取EXIF数据

时间:2012-05-08 07:58:30

标签: c# jpeg exif

我需要分析数千个jpeg文件(通过检索它的EXIF数据)。它超过50 GB的数据。我无法读取整个文件,因为它需要花费太多时间。

C#中是否有任何方法只读取这些文件中的EXIF数据而无需加载和解压缩整个jpeg文件?

编辑:为什么我需要快速方法?
我试过这个问题的解决方案:How to get the EXIF data from a file using C#
对于1000张总大小约为1GB的图像,需要3分钟进行分析。因此,对于较大的(50G)照片库,可能需要2个小时。当你需要几乎即时的信息时,例如:“客户使用的放大器是什么”,这太慢了。

4 个答案:

答案 0 :(得分:8)

您可以在ExifLib - A Fast Exif Data Extractor for .NET 2.0+(以及完整项目)中找到一些代码示例,其中显示了如何读取仅获取EXIF信息所需的最少数据。

答案 1 :(得分:2)

我最近将我的Java metadata-extractor 库移植到.NET。它自2002年以来一直活跃,并通过广泛使用进行了大量测试。在我的测试中,它通过2GB的图像进行搅拌,在我的机器上大约4秒内提取所有元数据。您可以通过告诉它只读取特定类型的元数据(例如Exif)来进一步优化。它支持许多图像/视频格式和许多元数据类型。

GitHubNuGet上提供。

答案 2 :(得分:1)

GdPicture.NET Imaging SDK开始版本10提供了一种新的图像解析机制,允许直接访问图像元数据(EXIF,GPS,XMP,IPTC ...)而无需解码像素。它支持90多种图像格式,包括JPEG,TIFF,RAW和WebP。

这里是GdPicture.NET知识库的链接,演示了如何使用C#和VB.NET提取元数据(还支持许多其他语言):tutorial

如果有人需要进一步的信息,我很乐意提供帮助。

免责声明:我是GdPicture.NET的产品架构师。

答案 3 :(得分:0)

你不需要解压缩任何东西,Exif信息保存在图像之前的标题中,所以你需要做的就是打开文件,读取exif标题并解码你需要的任何东西。 这是你手动读取exif数据(这并不难)。

如果您需要的只是尺寸,那就在前面

编辑:注意exif数据实际上并不是必须在前面,但它几乎总是如此,因此可以安全地假设它通常会比不存在时快得多。

另外,您是否检查过使用标准API“太慢”?我不会认为50G需要那么长的时间(或者如果以不同的方式做得一定会更快)。