パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。毎日更新を目指す!

画像をタイリング with ImageMagick

小さい画像を縦横に並べて大きい画像を作る要望があった。PhotoShop を使えば、小さい画像をパターンに登録して、必要な大きさの画像をそれで塗りつぶせば OK。ただ、今回は、自分がやるのではなくて、そういうお絵かきツールも使わないで、かつ、たくさんの画像に対してやってもらうという場合。

そいうのに便利な画像を操作するソフトウェアのセットが ImageMagick。これをバッチファイルにして、目的の小さい画像をドラッグアンドドロップすれば、大きい画像が出力されるようにできる。これで目的は達成できそう。ただ、縦横に何枚ずつ並べるか、等を指定しようとすると、バッチファイルを書き換えたりする必要があるのが面倒。バリエーションが少ないのなら、2x2 とか 3x3 とか全部の場合をそれぞれバッチファイルに作っておけばなんとかなりそうだ。

さて次は、ImageMagick のどの機能を使えばいいかだ。基本的に、画像を並べるとなると、montage.exe を使うのが普通だが、同じファイル名を並べる数だけ書かないといけないのが面倒。代わりに、上述の PhotoShop のやり方をまねて、convert.exe でやることができる。
convert.exe -geometry 400%x400% org.jpg -tile org.jpg -draw "rectangle 0,0 400%x400%" result.jpg
みたいな感じ。一度無駄に画像を 4x4 倍に引き伸ばす処理とか入るが、まぁいいだろう。

できませんでした... montage.exe 使わないといけ無さそう。
montage.exe -tile 2x2 org.jpg org.jpg org.jpg org.jpg result.jpg
という感じかな。

後は、ファイル名の部分を %1 とかにしてバッチファイルを作れば OK。ファイル名の部分は、拡張子を外したり色々できるようだ(参考 ykr414 さんのページ)。やっぱり定型処理はコマンドラインなプログラムが一番だなぁ。

ちなみに GUI が必要なら、HTML5(Canvas) をブラウザ上で使うのがいいかも。Canvas を img に変換して画像を右クリックで保存、とかするのかな。そこまでやるなら、WHSJScript とかもありか。