ImageMagickを使用して、複数の画像を1つの画像に結合したいと思います。少し良く説明するために、結果を次のように見せたいです。
つまり、多数のスクリーンショットがあり、それらを元の画像を重ねた1つの画像に変換したいのです。
グーグルで、私は「合成」コマンドに出くわしましたが、私は知りません、そしてその場合、私が望む結果を得るためにそれを使用する方法。
ImageMagickを使用して、複数の画像を1つの画像に結合したいと思います。少し良く説明するために、結果を次のように見せたいです。
つまり、多数のスクリーンショットがあり、それらを元の画像を重ねた1つの画像に変換したいのです。
グーグルで、私は「合成」コマンドに出くわしましたが、私は知りません、そしてその場合、私が望む結果を得るためにそれを使用する方法。
回答:
次の名前の任意の数の入力ファイルの場合: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行の+append
1列を作成し、水平方向に連結してn列の1行を作成することに注意してください。
(ImageMagick:コマンドラインオプションを参照してください。)
montage
レイアウトをより細かく制御するには、montage
ツールが必要です。オプションのmontage -mode concatenate
ように入力画像を接着し、適用するレイアウトを制御します。append
-tile 1x
tile
列 × 行の形式に従いますが、どちらかの側が欠落している可能性がありmontage
、制約を満たす方法がわかります。
ここでは1x
(任意の数の行を持つ正確に1つの列)を使用して、と同じ効果を得てい-append
ます。なし-tile 1x
では+append
、デフォルトで-tile x1
(1行の任意の数の列)のような画像を結合します。
(ImageMagickの例:モンタージュ、画像の配列を参照してください。)
convert -append `counter=0; for x in in-*; do if [[ $(($counter % 2)) == 0 ]]; then echo $x; fi; counter=$((counter + 1)); done` out.jpg
が仕事をするはずです。
convert -tile 2x2
etc.コマンドはファイルをアルファベット順に読み取ることに注意してください。これは、という名前のチャンク0-10
がのように読み取られることを意味します0,10,1,2,..,9
。この基本的なことを実現するために、ほぼ2時間かかりました。
ls *
これらの値をその順序で返します。