Shell-Script

如何可靠地確定文件是否為圖像文件?

  • April 2, 2020

目前我正在使用以下命令:

file image.jpg | cut -d " " -f 2

到現在為止還挺好。它也適用於沒有圖像副檔名的文件。所以,我想知道是否有另一種方法可以做到這一點?我可能沒有看到上述程式碼會失敗的特定情況。

編輯:我正在嘗試創建一個腳本來按順序重命名目錄中的圖像文件。

ImageMagick 項目具有辨識圖像的功能。

我一直在使用 ImageMagick,包括它在命令行中的“辨識”功能,它從來沒有失敗過一次辨識圖片。

請注意,它提供的不僅僅是格式,例如:

$  identify tmp3.jpg 
tmp3.jpg JPEG 1680x1050 1680x1050+0+0 DirectClass 8-bit 293.582kb 

$  identify tmp.png
tmp.png PNG 1012x900 1012x900+0+0 DirectClass 8-bit 475.119kb

使用file是辨識文件類型的可靠方法。它不依賴於文件副檔名,而是依賴於“幻數”;文件內容的開頭。

為了使您的過程更加健壯,您可以libmagic直接使用。這樣,如果由於某種原因file’ 的輸出格式發生變化,它不會影響您。但是,這確實意味著您需要使用可以呼叫 C 庫中的函式的語言編寫腳本。

引用自:https://unix.stackexchange.com/questions/577469