世の中には拡張子を変更すれば中身も変わると思っている人がいるらしく、
.pngなのに中身はjpegファイルだったり、.jpgなのに中身はpngファイルだったりってファイルによく遭遇する。
画像まわりで処理が何故かエラーになったり、挙動がおかしくなったりするのは6割方これのせい。
偽の image.png
ファイルを調べる
image.jpg
というjpegファイルから、ファイル名変更で拡張子だけを変更した image.png
を file
コマンドで実行するだけ
$ file /tmp/image.png
/tmp/image.png: JPEG image data, JFIF standard 1.02, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 500x500, frames 3
JPEG image data
と表示される
本物のPNGファイルだとこんな表示
$ file /tmp/image.png
/tmp/image.png: PNG image data, 500 x 500, 8-bit/color RGBA, non-interlaced
ピクセル数、何bitなど他の情報も取得できる
fileコマンドは画像ファイル以外にも使える
$ file /tmp/image.psd
/tmp/image.psd: Adobe Photoshop Image, 500 x 500, RGB, 3x 8-bit channels
$ file /tmp/image.zip
image.zip: Zip archive data, at least v2.0 to extract
軽い情報はここから読み取れるので、CUIで操作してるとき多少便利かも