2012-05-08 160 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