วิธีการรวมรูปภาพในบรรทัดคำสั่ง [ปิด]


111

ฉันอยากจะลองใช้เทคนิคCSS Spriteเพื่อโหลดภาพขนาดย่อสองสามภาพเป็นภาพเดียว ดังนั้นฉันต้อง "รวม" ภาพขนาดย่อสองสามภาพในไฟล์เดียวแบบออฟไลน์ในเซิร์ฟเวอร์

สมมติว่าฉันมีภาพขนาดย่อ 10 ภาพที่มีขนาดเท่ากัน คุณจะแนะนำให้ฉัน "รวม" จากบรรทัดคำสั่ง Linux ได้อย่างไร

คำตอบ:


198

คุณยังสามารถลองใช้ImageMagicซึ่งเหมาะสำหรับการสร้าง CSS Sprites บางกวดวิชาเกี่ยวกับเรื่องนี้ที่นี่

ตัวอย่าง (สไปรต์แนวตั้ง):

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

ตัวอย่าง (สไปรต์แนวนอน):

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

45
หมายเหตุ: นี่จะสร้างเทพดาแนวตั้งสำหรับการใช้งานสไปรต์แนวนอนแทน+append -append
Chango

13
ถ้าคุณขี้เกียจconvert -append *.png out.png
ChillarAnand

วิธีนี้ใช้ได้ผล แต่สำหรับไฟล์ขนาดใหญ่ต้องใช้เวลามาก มีวิธีในการเรียบเรียงอย่างรวดเร็วหรือไม่?
Vlad Tsepelev

@VladTsepelev การเชื่อมต่อ PNG จำนวนมากหมายถึงการถอดรหัส (เป็น pixmap) สำหรับการดำเนินการและในที่สุดก็เข้ารหัสอีกครั้ง หากคุณต้องการขยายสไปรต์ที่มีอยู่บ่อยๆการรักษาเวอร์ชัน pixmap ที่ถอดรหัสไว้อาจช่วยเร่งความเร็วได้ ดูคำตอบของฉันสำหรับการทำโดยใช้เครื่องมือ PNM เพื่อให้การดำเนินการนี้สำเร็จ แต่แน่นอนว่าเวอร์ชัน pixmap นั้นใหญ่กว่า PNG ดังนั้นคาดว่าจะใช้พื้นที่เก็บข้อมูลมากขึ้น
Alfe

1
มันบอกว่า:´convert-im6.q16: width or height เกินขีด จำกัด `ktwo201121817-c102_lpd-targ.fits_autoaper.png '@ error / cache.c / OpenPixelCache / 3839.´
zabop

28

คุณยังสามารถใช้GraphicsMagickซึ่งเป็นทางแยกที่เบาและเร็วกว่าของ ImageMagick:

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

การเปรียบเทียบเวลาง่ายๆของการรวมภาพ 12 ภาพ:

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 เกือบสองเท่า


7

ใช้pnmcatnetpbm-package

คุณอาจต้องแปลงไฟล์อินพุตของคุณไปมาเพื่อใช้งาน:

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

4

หากคุณต้องการรวมรูปภาพจากซ้ายไปขวาให้ใช้คำสั่งต่อไปนี้:

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

หมายเหตุ+appendแทน-append.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.