2012-05-08 162 views
4

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

有没有在C#中的任何方法来读取这些文件只EXIF数据,而无需加载和解压整个JPEG文件?

编辑:为什么我需要快速的方法?
我试着从这个问题的解决方案:How to get the EXIF data from a file using C#
及对1000倍的图像与总规模〜1GB花了3分钟分析。因此对于较大的(50G)照片库,可能需要2个小时。当你需要几乎一成不变的信息,例如:“你的客户使用什么样的缩放比例”,它太慢了。

回答

0

你并不需要解压缩什么,Exif信息在图像前的头举行,因此,所有你需要做的就是打开文件,读取EXIF首和解码什么是你需要的。 这是如果您手动读取exif数据(这并不困难)。

如果你需要的是尺寸,也就是在最前面

编辑:注意EXIF数据不actualy必须在前面,但几乎总是有效的,因此它是安全的假设一般情况下它会比没有更快。

此外,您是否检查过使用标准API是'太慢'?我不会认为它需要50G这么长时间(或者如果以不同的方式来做这件事情一定会更快)。

1

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

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

如果有人需要进一步的信息,我会很高兴协助。

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

2

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

可用上GitHubNuGet