ImageMagickを使用して複数の画像を組み合わせる


166

ImageMagickを使用して、複数の画像を1つの画像に結合したいと思います。少し良く説明するために、結果を次のように見せたいです。

つまり、多数のスクリーンショットがあり、それらを元の画像を重ねた1つの画像に変換したいのです。

グーグルで、私は「合成」コマンドに出くわしましたが、私は知りません、そしてその場合、私が望む結果を得るためにそれを使用する方法。



回答:


256

次の名前の任意の数の入力ファイルの場合:in-<something>.jpg

convert -append in-*.jpg out.jpg

特定のファイルを追加したり、完全な「glob」を取得する代わりに数字をスキップしたりするには、入力ファイルを明示的に言及し、appendその後にコマンドを入力します

Convert in-1.jpg in-5.jpg in- N .jpg + append out-in1-plus-in5-and-in N .jpg

-append(の代わりに+append)垂直貼り付けに使用できます。

または:

montage -mode concatenate -tile 1x in-*.jpg out.jpg

またout.jpg、ソース画像の垂直連結を含むファイルを作成します。

convert

単一の行または列を単純に連結するにappendは、convertツールのオプションで十分です。-appendすべての画像を垂直方向に連結してn行の+append1列を作成し、水平方向に連結してn列の1行を作成することに注意してください。

ImageMagick:コマンドラインオプションを参照してください。)

montage

レイアウトをより細かく制御するには、montageツールが必要です。オプションのmontage -mode concatenateように入力画像を接着し、適用するレイアウトを制御します。append-tile 1x

tile × の形式に従いますが、どちらかの側が欠落している可能性がありmontage、制約を満たす方法がわかります。

ここでは1x(任意の数の行を持つ正確に1つの列)を使用して、と同じ効果を得てい-appendます。なし-tile 1xでは+append、デフォルトで-tile x1(1行の任意の数の列)のような画像を結合します。

ImageMagickの例:モンタージュ、画像の配列を参照してください。)


1
ありがとう。appendは正常に機能しますが、モンタージュが壊れていると考えています。ghostscriptフォントがインストールされていない場合、画像に注釈を付けていなくても、それは救済されます。フォントは、事前にではなく、オンデマンドでロードする必要があります。
ブラム14年

@Bram:私はそれを知りませんでしたし、強く同意します。GraphicsMagickの動作が同じかどうか知っていますか?
ペス14年

2
@MikeRobinson convert -append `counter=0; for x in in-*; do if [[ $(($counter % 2)) == 0 ]]; then echo $x; fi; counter=$((counter + 1)); done` out.jpgが仕事をするはずです。
gozzilli 14年

2
convert -tile 2x2etc.コマンドはファイルをアルファベット順に読み取ることに注意してください。これは、という名前のチャンク0-10がのように読み取られることを意味します0,10,1,2,..,9。この基本的なことを実現するために、ほぼ2時間かかりました。
phil294

1
@Blauhirn:それはファイル名のソートを変換するのですか、それとも単にあなたのグロブがその順序でファイルを返すのですか?たとえば、ls *これらの値をその順序で返します。
naught101
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.