ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Identifyで画像情報を取得する

(2022-12-18 初稿 - 2023-04-08 修正)

Debianで画像の大きさを一括して取得するメモ。

筆者の環境

Linux hoge 5.10.0-20-amd64 #1 SMP Debian 5.10.158-2 (2022-12-13) x86_64 GNU/Linux

画像の情報は、ImagemagickのIndentifyコマンドで取得できる。

Imagemagickがインストールされていない場合は、以下のとおりインストール。

$ sudo apt install imagemagick

画像情報の表示

$ identify example.jpg  
example.jpg JPEG 2250x4000 2250x4000+0+0 8-bit sRGB 1.90697MiB 0.000u 0:00.000

便利なことにidentifyはワイルドカードにも対応しているので、あるディレクトリのすべてのjpgファイルを表示する場合は以下のとおり。

$ identify *.jpg
example1.jpg JPEG 213x227 213x227+0+0 8-bit sRGB 58371B 0.010u 0:00.009
example2.jpg JPEG 2250x4000 2250x4000+0+0 8-bit sRGB 1.90697MiB 0.000u 0:00.000
example3.jpg JPEG 4000x2250 4000x2250+0+0 8-bit sRGB 3869300B 0.000u 0:00.000
example4.jpg JPEG 4000x2250 4000x2250+0+0 8-bit sRGB 3.58419MiB 0.000u 0:00.000
example5.jpg JPEG 2048x1536 2048x1536+0+0 8-bit sRGB 1.98413MiB 0.010u 0:00.005

このうち、example.jpgの画像サイズのみ取得する場合は以下のとおり

$ identify Desktop/example.jpg | cut -f 3 -d ' '
2250x4000

xが邪魔な場合は、sedで空白にすると良い。

$ identify Desktop/example.jpg | cut -f 3 -d ' ' | sed 's/x/ /'
2250 4000

ファイルにリダイレクト後、表計算ソフトなどで読み込んで、最大、最小を表示させることもできるが、awkを使った場合は以下のとおり。

【横最大値
$ identify Desktop/*.jpg | cut -f 3 -d ' ' | sed 's/x/ /' |  awk '{if(m<$1) m=$1} END{print m}'
【縦最大値】
$ identify Desktop/*.jpg | cut -f 3 -d ' ' | sed 's/x/ /' |  awk '{if(m<$2) m=$2} END{print m}'
【横最小値】
$ identify Desktop/*.jpg | cut -f 3 -d ' ' | sed 's/x/ /' |  awk 'BEGIN{m=1000000} {if($1 != "" && m>$1) m=$1} END{print m}'
【縦最小値】
$ identify Desktop/*.jpg | cut -f 3 -d ' ' | sed 's/x/ /' |  awk 'BEGIN{m=1000000} {if($2 != "" && m>$2) m=$2} END{print m}'

関連ページ