convertコマンド1回での画像処理【Imagemagick】

こんにちは。入社して約半年経ちました、ふくまです。
この時期は寒くてエアコン暖房必須です。少し前にSNSで「寝るとき暖房つけるか、つけないか」の質問をしたところ、30弱の票が集まり「暖房つけない」のほうが若干多かったです。 私は寒い時にエアコンも加湿器もガンガンに「つける」ので、個人的に衝撃の結果でした。
最近Imagemagickのコマンドと少しお友達になれたので、その内容について書いていきます。  

convertコマンドを1回で実行する理由

その方が処理が早いためです。 ですが、ネットで参考にさせていただいた記事だと、convertコマンドで画像を何回かに分けて生成し、最終的な画像を生成しているものが多かったです。

生成する画像

複数の画像処理を一括で行うため、今回はこれら2つの画像を使用することにします。(「いらすとや」さん、ありがとうございます。https://www.irasutoya.com/)  

すごい勢いで土下座をする人(syazai.png)  

とても怒っているカバ(kaba.png)

カンの良い方はもうお気づきかと思いますが、「怒ったカバに向けて全力で謝罪をする人」という構図の画像を生成します。
作業場所は上記2枚の画像を置いたディレクトリ内で、画像の生成先も同じ場所です。
コマンド作成手順は、1. kaba.pngを左右反転、2. syazai.pngを縮小、3. キャンバスの上に1,2を配置(コマンド1回で実行)、です。

convertコマンドを1回で実行する

1.kaba.pngを左右反転
convert kaba.png -flop output1.png
2.syazai.pngを縮小
convert syazai.png -resize 50% output2.png
3.キャンバスの上に1,2を配置(コマンド1回で実行)
convert \( -size 1255x705 xc:white -gravity west \( kaba.png -flop \) -composite -gravity southeast \( syazai.png -resize 50% \) -composite \) output.png

3の実行結果

今後見ることは無いであろう構図です。

コマンドの説明

3のコマンドを、外側から順を追って説明します。
convert \( A \) output.png
上記は、Aの処理の結果をoutput.pngに出力します。 次にAの中身を見ます。
-size 1255x705 xc:white -gravity west \( B \) -composite -gravity southeast \( C \) -composite
-size 1255×705 xc:whiteで、出力する画像サイズと背景白を定義しています。
そして-gravity west ( B ) -compositeで、キャンバスに左寄せでBの画像を出力することを指定しています(-compositeは複数画像を合成する際に使うオプションです)。
-gravity southeast ( C ) -compositeで、キャンバスに右下寄せでCの画像を出力します。
そして、Bは反転したカバ、Cは謝罪してる人の縮小した画像をそれぞれ返します。

最後に

今回はconvertコマンド1回で複数処理を実行する方法を紹介しました。
Imagemagickのコマンドは奥が深そうなので、今後も使い方を探索していきたいです。