2016/07/21

Imagemagickで複数枚の画像を1枚にまとめる

時系列で画像を作成した時や,様々な条件で画像を作成した際に複数枚の画像ファイルを1ファイルにまとめたいことがしばしばあります.時系列画像の場合なら,gifアニメを作るのも1つの手です.が,複数ページの図に出来ないかなと思っていたところ,PDFにしたら出来るんじゃないか!?と思ったら出来ちゃいました.やり方は,

convert *.png hoge.pdf

これだけ.特段のオプションは必要なく,1画像1ページのPDFが出来上がりました.流石 ImageMagick.流石 convert.




ついでに紹介(こちらの方が長文).複数の画像ファイルを縦横に並べて1枚の画像にしたい場合は,montage が使えます.

montage *.png hoge.png

ただし,縦横の枚数は適当に調整してくれますが,1つ1つの画像が非常に小さくなってしまいます.これを避けるために,最低限

montage -tile (横)x(縦) *.png -geometry (X)x(Y) hoge.png

位は知っておいて損は無いでしょう.基本的に私の場合は,identify で元の画像ファイルのサイズを調べて,そのまま geometry に指定しています.この geometry は,出来上がりの hoge.png の画像サイズではなく,並べられる元の画像のサイズなので注意が必要です.
-tile オプションは,(横)のみの指定や(縦)のみの指定も,(横)x や x(縦) などとして可能です.例えば, -tile 1x として実行すれば縦にずらっと並びます.また,(横)x(縦) よりも多くの入力ファイルが指定されている場合は, hoge-#.png のようにナンバリングされて出力されます.それをさらに convert でPDF1枚に仕上げることも出来ます.

複数の画像ファイルを1つにまとめる方法

  • convert で pdf にする(1画像1ページのPDFになる)
  • convert で gif にする(gifアニメになる)
  • montage で並べる
まだ他にもありそうですが,今知っている方法はここまで.

単にサイズの異なる画像を並べるだけなら,以下で出来ます.
$ convert -append  上画像 下画像  出力画像
$ convert +append  左画像  右画像 出力画像