bash + ImageMagickでフォルダ内の画像をまとめて加工する

フォルダ内の画像をまとめて加工したい需要があったため、シェルスクリプト(bash)とImageMagickでまとめて加工できるようにしてみました。

結論

以下のスクリプトでフォルダ内の画像(png,jpg,jpeg)をグレースケール(白黒画像)に変換できます。
フォルダ直下の画像だけでなく、子のフォルダも再帰的に検索します。
その他の加工を行いたい場合は convert コマンドの引数を変更してください

(追記)ImageMagickのversion 7以降は convert ではなく magick コマンドになったようです

#!/bin/bash
convImg () {
  path="$1"
  ext="${path##*.}"
  name="${path%.*}"
  newPath="${name}_gray.${ext}"

  # 画像変換処理
  convert "${path}" -colorspace gray "${newPath}"

  echo "Processed: ${path}"
}

shopt -s globstar nullglob
for i in **/*.png; do
  convImg "$i"
done
for i in **/*.jpg; do
  convImg "$i"
done
for i in **/*.jpeg; do
  convImg "$i"
done

ImageMagickについて

画像を編集するコマンドラインツールです。
以下のようなことができます。

  • サイズ変更
  • 反転
  • ミラーリング
  • 回転
  • 変形
  • せん断
  • 色の調整
  • 特殊効果の適用
  • テキスト、線、ポリゴン、楕円、ベジェ曲線の描画
  • etc...

他にも様々な加工が出来ます。詳しくは 公式ページ を参照ください。
サンプルページ もあります。

magickコマンド(旧convert)について

使用できる加工(オプション)は以下にまとまっています。

https://imagemagick.org/script/convert.php

以上です!

コメントする