カテゴリー
【Alpine Linux対応】Exiftoolコマンドから画像サイズを調べる
※ 当ページには【広告/PR】を含む場合があります。
2021/09/02

画像のサイズを取得したい場合には、画像ビューアを開いてそのサイズを表示させたり、ファイラの詳細情報から確認出来たりもします。
ではこのような画像ファイルの設定値をコマンドラインから読み取るにはどうしたら良いのでしょうか。
今回はLinuxコマンドから画像のExifを読み出してみる方法を考えてみます。
Exifコマンドとは
画像や動画にはExif(Exchangeable image file format)と呼ばれるメタデータが含まれています。
このExifの中にはその画像に関連する情報が保持されており、例えば画像が撮影されたGPS座標や撮影日時などを取得できます。
今回は画像サイズを知りたいという用途ですが、これもExifを読み出すことでコマンドラインから簡単に出力できます。
alpine linuxにexiftoolをインストール
exiftoolは今日日ほとんどのLinuxディストリビューションで簡単にパッケージインストールすることができます。
とりわけ著者が個人でDockerコンテナ等でお世話になっているAlpine Linuxコンテナ内でもパッケージ版が提供されているのも有り難い点です。
$ apk add --no-cache exiftool
#👇インストールしたバージョンの確認
$ exiftool -ver
12.30
またExifメタ情報を呼び出す定番である
ImageMagick
identify
Exifの編集という点においては最高峰のフリーツールであることは間違い無いですが、今回のように簡単な用途であれば
identify
なおalpine linux向けのパッケージ版imagemagickも利用可能です。
exiftoolコマンドから画像サイズを取得
ここでは適当なJPEG画像でexiftoolを使ってみましょう。
$ exiftool 0.jpg
ExifTool Version Number : 12.30
File Name : 0.jpg
Directory : user/hoge
File Size : 68 KiB
File Modification Date/Time : 2021:06:24 09:18:50+00:00
File Access Date/Time : 2021:08:31 12:13:19+00:00
File Inode Change Date/Time : 2021:06:24 09:18:50+00:00
File Permissions : -rw-r--r--
File Type : JPEG
File Type Extension : jpg
MIME Type : image/jpeg
JFIF Version : 1.01
Exif Byte Order : Little-endian (Intel, II)
X Resolution : 300
Y Resolution : 300
Resolution Unit : inches
Software : GIMP 2.10.8
Modify Date : 2021:06:22 17:33:41
Compression : JPEG (old-style)
Photometric Interpretation : YCbCr
Samples Per Pixel : 3
Thumbnail Offset : 260
Thumbnail Length : 14408
XMP Toolkit : XMP Core 4.4.0-Exiv2
Document ID : gimp:docid:gimp:aab6a91a-be04-421f-909d-4c518d6c9d69
Instance ID : xmp.iid:b99c6598-27dd-4490-ae48-f3a30977e265
Original Document ID : xmp.did:cb01054a-183b-4411-81b2-e9befa182810
Api : 2.0
Platform : Linux
Time Stamp : 1624350822276598
Version : 2.10.8
Format : image/jpeg
Creator Tool : GIMP 2.10
Location Created :
Location Shown :
Artwork Or Object :
Registry ID :
History Action : saved
History Changed : /
History Instance ID : xmp.iid:42b5d359-680a-4aaa-be28-9b04473226fb
History Software Agent : Gimp 2.10 (Linux)
History When : +09:00
Image Supplier :
Image Creator :
Copyright Owner :
Licensor :
Current IPTC Digest : fb6f595a0147c60cd9eabd5ce65828a5
Date Created : 2021:06:22
Time Created : 17:33:41-17:33
Image Width : 400
Image Height : 346
Encoding Process : Progressive DCT, Huffman coding
Bits Per Sample : 8
Color Components : 3
Y Cb Cr Sub Sampling : YCbCr4:4:4 (1 1)
Image Size : 400x346
Megapixels : 0.138
Thumbnail Image : (Binary data 14408 bytes, use -b option to extract)
Date/Time Created : 2021:06:22 17:33:41-17:33
Date/Time Original : 2021:06:22 17:33:41-17:33
デフォルトでは基本的なメタ情報が全て取得されてしまうので、ファイルサイズだけに絞りたいならば
-imagesize
$ exiftool -imagesize 0.jpg
Image Size : 400x346
画像サイズ以外にもお目立ての情報があれば
exiftool -h
$ exiftool 0.jpg | grep MIME
MIME Type : image/jpeg
recursiveで使う
もちろんシェルで使う場合にはwhileループなどでディレクトリ内のファイルを一つ一つ読み取ってexiftoolで捌いても良いのですが、
-rオプション
hogeフォルダに複数個の画像(jpeg)ファイルがあったとして、
$ tree
.
└── hoge
├── 0.jpg
├── 1.jpg
├── 2.jpg
├── 3.jpg
└── 4.jpg
このhogeフォルダに含まれるjpg画像の画像サイズを全て取得させる場合には以下のように書けます。
$ exiftool -r -imagesize -ext jpg hoge/
======== hoge/0.jpg
Image Size : 350x407
======== hoge/1.jpg
Image Size : 548x800
======== hoge/2.jpg
Image Size : 410x67
======== hoge/3.jpg
Image Size : 872x592
======== hoge/4.jpg
Image Size : 727x734
1 directories scanned
5 image files read
grepやsedで出力の見栄えを調整して、さらに見やすい感じにカスタマイズもできます。
$ exiftool -r -imagesize -ext jpg hoge/ | grep Size
Image Size : 350x407
Image Size : 548x800
Image Size : 410x67
Image Size : 872x592
Image Size : 727x734
まとめ
以上、画像ファイルのサイズを一気にコマンドラインでExifメタデータから出力させたいときに便利なexiftoolの簡単な使い道を解説してみました。
Exifからは様々な情報が取得できますので、画像サイズだけでなく色々と応用が効くと思います。 そこら辺は各人でどう応用できるか研究してみてはいかがかと思います。
参考サイト
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー