Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

世の中には拡張子を変更すれば中身も変わると思っている人がいるらしく、
.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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした