(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}'