Gabungkan beberapa gambar menggunakan ImageMagick

166

Saya ingin menggabungkan beberapa gambar menjadi satu gambar menggunakan ImageMagick. Untuk menjelaskan sedikit lebih baik, saya ingin hasilnya terlihat mirip dengan ini:

Artinya, saya memiliki sejumlah tangkapan layar, dan saya ingin mengubahnya menjadi satu gambar dengan gambar asli di atas satu sama lain.

Dengan Googling, saya telah menemukan perintah 'gabungan', tetapi saya tidak tahu jika, dan dalam hal ini bagaimana menggunakannya untuk mendapatkan hasil yang saya inginkan.

Petter
sumber
Apakah Anda melihat contoh multi-layer gambar imagemagick ?
timbooo
stackoverflow.com/questions/12076293/...
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

256

Untuk sejumlah file input bernama :in-<something>.jpg

convert -append in-*.jpg out.jpg

Untuk menambahkan file tertentu, atau melewati angka alih-alih mendapatkan "glob" lengkap, Anda dapat menyebutkan file input secara eksplisit dan memberikan appendperintah setelahnya

convert in-1.jpg in-5.jpg in- N .jpg + tambahkan out-in1-plus-in5-and-in N .jpg

Anda dapat menggunakan -append(bukan +append) untuk menempel vertikal.

Atau:

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

juga akan membuat file out.jpgyang berisi gabungan vertikal dari sumber gambar.

convert

Untuk penggabungan sederhana dalam satu baris atau kolom, appendopsi convertalat cukup. Perhatikan bahwa -appendmenggabungkan semua gambar secara vertikal, membuat satu kolom dengan n baris, dan +appendmenyatukan secara horizontal, membuat satu baris dengan n kolom.

(Lihat ImageMagick: Opsi baris perintah .)

montage

Untuk mendapatkan kontrol yang lebih baik atas tata letak, kita membutuhkan montagealat. montage -mode concatenateakan merekatkan gambar input bersama seperti appendopsi dan -tile 1xmengontrol tata letak yang akan diterapkan.

tilemengikuti format kolom × baris , tetapi kedua sisi mungkin hilang dan montageakan mencari cara untuk memenuhi kendala.

Kami menggunakan 1x(tepat satu kolom dengan jumlah baris) di sini untuk mendapatkan efek yang sama dengan -append. Tanpa -tile 1x, itu akan bergabung dengan gambar seperti +append, default ke -tile x1(sejumlah kolom pada satu baris).

(Lihat Contoh ImageMagick: Montage, Susunan Gambar .)

peth
sumber
1
Terima kasih. append berfungsi dengan baik, tapi saya menganggap montase rusak: jika font ghostscript tidak diinstal, itu akan menyelamatkan, BAHKAN jika Anda tidak membubuhi keterangan gambar. Font harus dimuat sesuai permintaan, bukan di muka.
Bram
@Ram: Saya tidak tahu itu dan sangat setuju. Apakah Anda tahu jika GraphicsMagick berperilaku sama?
peth
2
@ MikeRobinson convert -append `counter=0; for x in in-*; do if [[ $(($counter % 2)) == 0 ]]; then echo $x; fi; counter=$((counter + 1)); done` out.jpgharus melakukan pekerjaan itu.
gozzilli
2
Perhatikan bahwa convert -tile 2x2perintah dll. Akan membaca file secara alfabet . Ini berarti potongan yang dinamai 0-10akan dibaca seperti 0,10,1,2,..,9. Butuh waktu hampir 2 jam untuk menyadari sesuatu yang mendasar ini.
phil294
1
@ Blauhirn: Apakah itu mengkonversi penyortiran nama file, atau apakah itu hanya glob Anda yang mengembalikan file dalam urutan itu? mis. ls *akan mengembalikan nilai-nilai itu dalam urutan itu.
nucky101