日記

imagemagickでフォルダ内の画像を全組み合わせで2枚横並びに結合して書き出したい!

複数枚ある画像を全て掛け合わせて2枚を横並びにして出したいということがありました。Photoshopのアクションでできるかと思ったのですが、できなかったのでどうしたら良いか調べたところ「imagemagick」ならできるということだったのでやってみました。

環境はMac

やりたいこと

画像がフォルダ内に、A.png,B.png,C.png…..X.png,Y.png,Z.pngとある場合A+A,A+B,A+C……Z+Y,Z+Zのように横並びにしていきたいです。(A+Aはいらないが、いらなかったら消せばいいのでとりあえず重複込みを想定でサクッとプログラムを作って書き出したい)

上記イメージが完成予定です。

準備

調べた結果、Photoshopのアクションでは出来なさそう、Pythonではできそうだけどプログラムを作るのが面倒そう、imagemagickならコマンドラを打つだけでなんか簡単にできそう。(結構調べることになりましたが。)という結果だったのでimagemagickで画像横並びを自動で実施できるようにしようと思います。

imagemagickをインストール

HomeBrewを使ってimagemagickをインストール可能ということでHomeBrewのインストールがまだの場合はHomeBrewをインストール

$ brew -v

imagemagickをインストール

$ brew install imagemagick

ちゃんと入ったか確認。

$ convert -version

imagemagickを実行

あとはコードを打ち込んでターミナルで実行するだけで自動で横並び画像を作ってくれます。

arr=(ls *.png)
num=${#arr[*]}
for ((i=0; i<num; i=i+1)); do
for ((j = 0; j < num; j=j+1)); do
convert ${arr[$i]} ${arr[$j]} +append image_${i}_${j}.png

done
done

おわり

コピペで済むかと思いきやなかなか誰もやっていなかったので、結局自作することになりました。2次元ループの書き方がわからず、時間がかかりましたが、わかれば簡単に作れました。

参考元:https://www.imagemagick.org/discourse-server/viewtopic.php?t=33814

COMMENT

メールアドレスが公開されることはありません。