大量画像の一括リサイズ

大量のデジカメ写真があるのですが、あまりに量が多すぎて見るのもなかなか大変です。なんせ、開くのに時間がかかってしまいますので。

そこで、画像を一括縮小してやろうということで、調べてみました。

やりたいのは、ディレクトリを切ってある場所に、s_XXXXXX.jpg というファイル名で保存してあるものとします。これを縮小し、同じディレクトリに t_XXXXXX.jpg というファイル名で縮小画像を生成します。

結論から書くと、こんなワンライナーになりました。

$ for f in */s_*.jpg ; do cp $f ${f//s_/t_} ; mogrify -resize 640x640 -quality 60 ${f//s_/t_} ; done

for文でファイル名一覧を取得し、ループ内で一旦 t_XXXXXX のファイル名としてコピー(元のファイルを残さないなら mv でよい)します。その後、mogrify コマンドで 640×640 に収まるようにサイズ変換し、JPEG画像品質を60に指定します。
ファイル名の置換はシェル変数の置換 ${f//s_/t_} で行っています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)