ファイルが画像ファイルであるかどうかを確認する方法は? [コピー]

ファイルが画像ファイルであるかどうかを確認する方法は? [コピー]

現在、次のコマンドを使用しています。

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の場合、コマンドファイルではありません)

関連情報