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.
imagemagick
image-processing
Petter
sumber
sumber
Jawaban:
Untuk sejumlah file input bernama :
in-<something>.jpg
Untuk menambahkan file tertentu, atau melewati angka alih-alih mendapatkan "glob" lengkap, Anda dapat menyebutkan file input secara eksplisit dan memberikan
append
perintah setelahnyaAnda dapat menggunakan
-append
(bukan+append
) untuk menempel vertikal.Atau:
juga akan membuat file
out.jpg
yang berisi gabungan vertikal dari sumber gambar.convert
Untuk penggabungan sederhana dalam satu baris atau kolom,
append
opsiconvert
alat cukup. Perhatikan bahwa-append
menggabungkan semua gambar secara vertikal, membuat satu kolom dengan n baris, dan+append
menyatukan 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
montage
alat.montage -mode concatenate
akan merekatkan gambar input bersama sepertiappend
opsi dan-tile 1x
mengontrol tata letak yang akan diterapkan.tile
mengikuti format kolom × baris , tetapi kedua sisi mungkin hilang danmontage
akan 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 .)
sumber
convert -append `counter=0; for x in in-*; do if [[ $(($counter % 2)) == 0 ]]; then echo $x; fi; counter=$((counter + 1)); done` out.jpg
harus melakukan pekerjaan itu.convert -tile 2x2
perintah dll. Akan membaca file secara alfabet . Ini berarti potongan yang dinamai0-10
akan dibaca seperti0,10,1,2,..,9
. Butuh waktu hampir 2 jam untuk menyadari sesuatu yang mendasar ini.ls *
akan mengembalikan nilai-nilai itu dalam urutan itu.