2013-04-11 57 views
3

我需要驗證應用程序的很多圖像文件,情況是我有10個目錄,每個目錄上有近10,000個圖像,例如100,000個文件。這些文件應該是gif文件,但其中的很多文件(實際上意味着很多)都是jpg文件,設計人員無需轉換文件格式即可將擴展名從.jpg更改爲.gif。這導致應用程序崩潰,它使用這些圖像創建pdf文件,並且如果我告訴程序使用該文件somefile.gif,但它確實是一個帶有擴展名的PDF格式的PDF創建器崩潰的jpg。我不想打開每個文件,如irfanview或photoshop來驗證格式,然後在必要時修改它。是否有一個庫,類,插件或者其他語言的php或其他語言告訴我在擴展名中沒有基的文件的格式,但是在文件的頭文件中?如何用php驗證圖像格式

我找不到任何想法來做到這一點,有人可以幫助我嗎?

提前感謝!!!

+0

見http://stackoverflow.com/questions/134833/how-do-i-find-the-mime-type-of-a-file-with-php#134893 – jszobody 2013-04-11 20:59:37

回答

5

我個人使用exif_imagetype進行真正的驗證,而不是檢查擴展名或MIME類型。

+0

'exif_imagetype'不*真*驗證。它比'getimagesize'更加密集(但聯賽完全相同)。 – 2013-04-11 21:03:16

+1

@ M8R-1jmw5r:'exif_imagetype()'讀取圖像的第一個字節並檢查其簽名。然後,使用PHP本地函數,它是最好的。 – 2013-04-11 21:04:57

+0

爲了區分gif和jpeg,可以。如果你還需要顏色深度等,這不是那麼有用。例如。 PDF創建者可能會與CMYK jpegs一起崩潰;)即使gdlib被禁用,也可以使用'getimagesize()'。 – 2013-04-11 21:06:26

2

如果你需要找出GIF或JPEG之間,功能getimagesize()可以爲你做的。請參閱http://php.net/getimagesize

list(,,$imageType) = getimagesize($path); 
if ($imageType === IMAGETYPE_GIF) { 
    // GIF found 
}