画像サイズの一括変換

数千枚のJPEG画像のリサイズをする

縦横ピクセル数、画像サイズのバラバラなJPEG写真を、小さなピクセル数に一括変換する。
方針としては、
1、ImageMagickで縦横ピクセル数を取得
2、ピクセル数によってconvertでのリサイズパーセントを変更する
ことにする。ちなみに、写真の向き(縦長か横長)は別の人がすでに修正してくれていたのでここではやらない。ありがとう。

インターフェイスとしてのPerlMagickを入れていなかったので、これをインストールする。
サイズ取得のコードについては、MountainBigRoad.jpを参考にさせていただきました。

#!/usr/bin/perl
use Image::Magick;
$i = Image::Magick->new;
$i->Read($ARGV[0]);
$pic_width = $i->Get('width');
$pic_height = $i->Get('height');
print "$ARGV[0]"
print ",$pic_width";
print ",$pic_height\n";
exit;

これを、size.plとでもしておいて、bashででも変換したいファイルリストを渡し、取得したサイズをテキスト保存しとく。

そして、ここで取得したサイズを元に、convertコマンドでの変換パーセンテージを割り振るスクリプトでも書けば終了。
と、当初は思っていたのですが、もっと簡単な方法があるやん。
convertコマンド一発でいいじゃん。とほほ。

#! /bin/bash
declare fname=flist.txt
while read BUF
do
convert -resize 1024x1024 ${BUF} ./size1024/${BUF}
convert -resize 256x256 ${BUF} ./size0256/${BUF}
done < ${fname}

resizeオプションは、縦横比を保ったまま、256x256の箱に収まるサイズに拡大縮小してくれるとのこと。
参考にしたサイト