目次
フォルダ内の画像をまとめて加工したい需要があったため、シェルスクリプト(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
以上です!
Webエンジニアをやっています
UX/UIデザインからプログラミング、DB設計、SEO、インフラ構築など幅広く対応してます
PHP/PHPUnit/Laravel/Vue/Nuxt/Docker/Terraform
ご連絡はTwitterのDMまで。