Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

拡張子を偽るPNGファイルを見破るfileコマンド

世の中には拡張子を変更すれば中身も変わると思っている人がいるらしく、
.pngなのに中身はjpegファイルだったり、.jpgなのに中身はpngファイルだったりってファイルによく遭遇する。
画像まわりで処理が何故かエラーになったり、挙動がおかしくなったりするのは6割方これのせい。

偽の image.png ファイルを調べる

image.jpg というjpegファイルから、ファイル名変更で拡張子だけを変更した image.pngfile コマンドで実行するだけ

$ 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で操作してるとき多少便利かも

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?