有沒有一些廉價和可靠的方法來檢測圖像文件是否有EXIF數據?類似於「讀取前100個字節並搜索EXIF子串」是非常優選的。我不需要閱讀和解析它 - 只知道它是否在那裏。有沒有一些簡單的方法來檢測文件是否有EXIF數據?
關鍵是它必須非常快。 C++是最好的。
有沒有一些廉價和可靠的方法來檢測圖像文件是否有EXIF數據?類似於「讀取前100個字節並搜索EXIF子串」是非常優選的。我不需要閱讀和解析它 - 只知道它是否在那裏。有沒有一些簡單的方法來檢測文件是否有EXIF數據?
關鍵是它必須非常快。 C++是最好的。
您可以閱讀source of the PHP EXIF extension - 通過查看exif_read_data是如何實現的,您可能會找到一些線索。
你可以看看file (1)
的實現。
您可以只是調用它,當然,但你可能並不需要的file
小號功能,所以休息...
如果你不需要大量的表現,我會用一些的Exif庫並讓它嘗試爲您獲取Exif數據(如果有的話)。 (pyexif,perl的圖片:: EXIF,C#MetaDataExtractor等)
否則,
看看http://en.wikipedia.org/wiki/JPEG#Syntax_and_structure
你需要創建一個簡單的二進制解析器也挖掘出了 「段代碼」,並找到稱爲APP1的段(如果我理解正確的話)。數據應包含字母「Exif」
在我個人電腦上的隨機JPEG文件中,字節7-10表示「Exif」。我不知道所有JPEG文件中的位置是否相同。段可以是可變長度的。
你只需要檢查前4個字節流:
bool IsExifStream(const char* pJpegBuffer)
{
static const char stream_prefix1[] = "\xff\xd8\xff\xe1";
return memcmp(pJpegBuffer, stream_prefix1, 4) == 0;
}
問題是我不想解析文件以找到流的開始位置。我不關心流,我用文件工作。 – sharptooth 2009-10-19 11:37:47
是這個特定的一些語言? PHP內置EXIF函數 – 2009-09-24 13:32:13