Bagaimana cara menggabungkan gambar di baris perintah? [Tutup]

111

Saya ingin mencoba teknik CSS Sprite untuk memuat beberapa thumbnail sebagai satu gambar. Jadi saya perlu "menggabungkan" beberapa thumbnail dalam satu file secara offline di server.

Misalkan saya memiliki 10 thumbnail dengan ukuran yang sama. Bagaimana Anda menyarankan saya untuk "menggabungkan" mereka dari baris perintah Linux?

Michael
sumber

Jawaban:

198

Anda juga dapat mencoba ImageMagic yang bagus untuk membuat sprite CSS. Beberapa tutorial tentang itu di sini .

Contoh (sprite vertikal):

convert image1.png image2.png image3.png -append result/result-sprite.png

Contoh (sprite horizontal):

convert image1.png image2.png image3.png +append result/result-sprite.png
Petr Mensik
sumber
45
Catatan: Ini akan menghasilkan sprite vertikal, untuk penggunaan sprite horizontal, +appendbukan -append.
Chango
13
Jika Anda malas,convert -append *.png out.png
ChillarAnand
Ini berfungsi, tetapi untuk file besar membutuhkan banyak waktu. APAKAH ada cara untuk melakukan pengomposisian cepat?
Vlad Tsepelev
@VladTsepelev Menggabungkan banyak PNG berarti mendekodekannya (menjadi pixmap) untuk operasi dan akhirnya menyandikannya lagi. Jika Anda ingin memperluas sprite yang ada sangat sering, mungkin menyimpan versi pixmap yang telah didekode dapat mempercepat proses. Lihat jawaban saya untuk melakukannya dengan menggunakan alat PNM untuk mencapai operasi ini. Tapi tentu saja versi pixmap jauh lebih besar daripada PNG, jadi harap menggunakan lebih banyak penyimpanan.
Alfe
1
Dikatakan: ´convert-im6.q16: lebar atau tinggi melebihi batas `ktwo201121817-c102_lpd-targ.fits_autoaper.png '@ error / cache.c / OpenPixelCache / 3839.´
zabop
28

Anda juga dapat menggunakan GraphicsMagick , garpu ImageMagick yang lebih ringan dan lebih cepat:

gm convert image1.png image2.png -append combined.png

Perbandingan waktu sederhana untuk menggabungkan 12 gambar:

time convert image{1..12}.jpg -append test.jpg

real    0m3.178s
user    0m3.850s
sys     0m0.376s

time gm convert image{1..12}.jpg -append test.jpg

real    0m1.912s
user    0m2.198s
sys     0m0.766s

GraphicsMagick hampir dua kali lebih cepat dari ImageMagick.

tjanez
sumber
7

Gunakan pnmcatdari paket netpbm.

Anda mungkin harus mengonversi file input Anda ke sana kemari untuk menggunakannya:

pnmcat -lr <(pngtopnm 1.png) <(pngtopnm 2.png) | pnmtopng > all.png
Alfe
sumber
4

Jika Anda lebih suka menggabungkan gambar dari kiri ke kanan, gunakan perintah berikut:

convert image{1..0}.png +append result/result-sprite.png

Perhatikan +appendalih - alih -append.

abu_bua
sumber