画像を一括処理したい時、コマンドで行うことができたら便利ですよね。
いいツールはないかと調べていたところ、ImageMagickを知りました。
今回は、中でも「今後使えそうだな」と思った使用方法を紹介します。
ImageMagickとは
多くの画像フォーマットに対応したソフトウェアで、コマンドで利用することが可能です。
Macにインストール
Homebrewでインストールできます。
$ brew install imagemagick
コマンドについて
今回はconvertとmogrifyの2つのコマンドを使っていきます。
convert
個別の画像を処理する時に便利なコマンド
mogrify
mogrifyはImageMagickで一括処理を行う時に便利なコマンド
オプションの品質の指定について
『-quality』オプションで指定が可能です。
・pngの場合 1桁は圧縮方式の設定、10の桁は圧縮率の設定です。
デフォルトでは75設定になります。細かい説明はドキュメントをご覧ください。
https://www.imagemagick.org/script/command-line-options.php#quality
・jpgの場合 quality の指定は品質設定です。1から100の数値を指定できます。
PhotoShopのjpg書き出し時の品質で馴染みがあるのでわかりやすいかと思います。
便利なテクニック
画像の縮小サイズ作成
一括
$ mogrify -path ./thm -resize 300x300 -quality 100 *.jpg
単体
$ convert -resize 300x300 -quality 100 ./sample1.jpg ./thm/sample1-300x300.jpg
画像の拡張子の変更
すべてのpng画像をjpgに変更
mogrify -format jpg *.png
リストを作成しjpgに変更する
shell scriptを書いて行う方法でやっています。
サンプルの構造
project
├── images
│ ├── deep
│ │ └── sample3.png
│ ├── sample1.png
│ └── sample2.png
└── script
├── png-lists.txt
└── png2jpg.sh
png-lists.txt
../images/sample1.png
../images/sample2.png
../images/deep/sample3.png
png2jpg.sh
#!/bin/sh
if [ "$1" = "" ]
then
echo "[ERROR] 引数にリストのファイルを指定してください。"
exit
fi
for i in $(cat $1)
do
echo "---------------------"
echo "Target File: ${i}"
filename=${i%.png}
echo "${filename}";
convert "${filename}.png" "${filename}.jpg"
done
実行コマンド例
cd ./script
sh ./png2jpg.sh ./png-lists.txt
シェルスクリプトを使い、テキストファイルにリスト化したものを実行するスクリプトを作りました。
普段このスクリプトにやりたいことがあれば追記しています。
もとのファイルが必要なければrmコマンドを追加するなどしています。
まとめ
今回は、面倒な作業をまとめて処理してくれるImageMagickのコマンドテクニックを紹介しました。
小さなことでも時間短縮することが最近の目標です。
さまざまなことを効率化していきたいですね!
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。