2009-09-24 34 views
2

有沒有一些廉價和可靠的方法來檢測圖像文件是否有EXIF數據?類似於「讀取前100個字節並搜索EXIF子串」是非常優選的。我不需要閱讀和解析它 - 只知道它是否在那裏。有沒有一些簡單的方法來檢測文件是否有EXIF數據?

關鍵是它必須非常快。 C++是最好的。

+1

是這個特定的一些語言? PHP內置EXIF函數 – 2009-09-24 13:32:13

回答

1

你可以看看file (1)的實現。

可以只是調用它,當然,但你可能並不需要的file小號功能,所以休息...

0

如果你不需要大量的表現,我會用一些的Exif庫並讓它嘗試爲您獲取Exif數據(如果有的話)。 (pyexif,perl的圖片:: EXIF,C#MetaDataExtractor等)

否則,

看看http://en.wikipedia.org/wiki/JPEG#Syntax_and_structure

你需要創建一個簡單的二進制解析器也挖掘出了 「段代碼」,並找到稱爲APP1的段(如果我理解正確的話)。數據應包含字母「Exif」

在我個人電腦上的隨機JPEG文件中,字節7-10表示「Exif」。我不知道所有JPEG文件中的位置是否相同。段可以是可變長度的。

1

你只需要檢查前4個字節流:

bool IsExifStream(const char* pJpegBuffer) 
{ 
    static const char stream_prefix1[] = "\xff\xd8\xff\xe1"; 
    return memcmp(pJpegBuffer, stream_prefix1, 4) == 0; 
} 
+0

問題是我不想解析文件以找到流的開始位置。我不關心流,我用文件工作。 – sharptooth 2009-10-19 11:37:47

相關問題