Görüntüleri komut satırında nasıl birleştirebilirim? [kapalı]


111

Birkaç küçük resmi tek bir resim olarak yüklemek için CSS Sprite tekniğini denemek istiyorum . Bu yüzden sunucuda çevrimdışı olarak tek bir dosyada birkaç küçük resmi "birleştirmem" gerekiyor.

Aynı boyutta 10 küçük resmim olduğunu varsayalım. Onları Linux komut satırından "birleştirmemi" nasıl önerirsiniz?

Yanıtlar:


198

CSS sprite'ları oluşturmak için harika olan ImageMagic'i de deneyebilirsiniz . Bununla ilgili bazı eğitim burada .

Örnek (dikey hareketli grafik):

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

Örnek (yatay hareketli grafik):

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

45
Not: Bu, +appendyerine yatay hareketli grafik kullanımı için dikey bir hareketli grafik oluşturacaktır -append.
Chango

13
Tembel iseniz,convert -append *.png out.png
ChillarAnand

Bu işe yarıyor, ancak büyük dosyalar için çok zaman alıyor. Hızlı birleştirme yolu var mı?
Vlad Tsepelev

@VladTsepelev Çok sayıda PNG'yi birleştirmek, işlem için bunların kodunu çözmek (bir piksel haritasına) ve sonunda yeniden kodlamak anlamına gelir. Mevcut bir sprite'ı çok sık genişletmek istiyorsanız, kodu çözülmüş pixmap sürümlerini tutmak işleri hızlandırabilir. Bu işlemi gerçekleştirmek için PNM araçlarını kullanarak yapmak için cevabımı görün. Ancak elbette pixmap sürümleri PNG'lerden çok daha büyüktür, bu nedenle daha fazla depolama alanı kullanmayı bekleyin.
Alfe

1
Şöyle diyor: ´convert-im6.q16: genişlik veya yükseklik sınırı aşıyor "ktwo201121817-c102_lpd-targ.fits_autoaper.png '@ error / cache.c / OpenPixelCache / 3839.´
zabop

28

ImageMagick'in daha hafif ve daha hızlı çatalı GraphicsMagick'i de kullanabilirsiniz :

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

12 görüntüyü birleştirmenin basit bir zaman karşılaştırması:

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, ImageMagick'ten neredeyse iki kat daha hızlıdır.


7

pnmcatNetpbm paketini kullanın .

Muhtemelen giriş dosyalarınızı kullanmak için dönüştürmeniz gerekir:

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

4

Resimleri soldan sağa birleştirmeyi tercih ederseniz, aşağıdaki komutu kullanın:

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

+appendBunun yerine not edin -append.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.