目前我正在使用以下命令:
file image.jpg | cut -d " " -f 2
到目前為止,一切都很好。它也適用於沒有圖像擴展名的檔案。所以,我想知道是否有其他方法可以做到這一點?我可能還沒有看到上述程式碼會失敗的特定情況。
編輯:我正在嘗試建立一個腳本來按順序重命名目錄中的映像檔。
答案1
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
答案2
使用file
是識別文件類型的可靠方法。它不依賴檔案副檔名,而是依賴「幻數」;文件內容的開頭。
為了讓您的流程更加穩健,您可以libmagic
直接使用。這樣,如果由於某種原因 的file
輸出格式發生變化,它不會影響您。但是,這確實意味著您需要使用可以呼叫 C 庫中的函數的語言來編寫腳本。
答案3
您已經獲得了正確的命令,因為它所做的只是通過libmagic
.其唯一目的是認識到文件類型和圖案由各自給出的文件格式。所以你不會找到更好的東西。您甚至可以添加自己的檔案副檔名,但這些副檔名無法被正確識別。 (針對 magick,而非命令檔)