ผสานภาพเคียงข้างกัน (แนวนอน)


103

ฉันมีห้าภาพขนาด: 600x30, 600x30, 600x30, 600x30, 810x30 ชื่อของพวกเขาคือ: 0.png, 1.png, 2.png, 3.png, 4.png ตามลำดับ

ฉันจะรวมเข้าด้วยกันในแนวนอนเพื่อสร้างภาพขนาด 3210x30 ด้วย ImageMagick ได้อย่างไร

คำตอบ:


125

ImageMagick มาพร้อมกับmontageยูทิลิตี้ การตัดต่อจะต่อท้ายรูปภาพแต่ละภาพแบบเคียงข้างกันเพื่อให้คุณปรับระยะห่างระหว่างแต่ละภาพ ( -geometry) และเค้าโครงทั่วไป ( -tile)

montage [0-5].png -tile 5x1 -geometry +0+0 out.png

ตัวอย่างอื่น ๆ สามารถพบได้ในหน้าการใช้งานการตัดต่อ


1
เอกสารการตัดต่อระบุว่าไวยากรณ์ [0-5] เป็นของ linux ดังนั้นฉันเดาว่าถ้าคุณอยู่บน windows คุณต้องพิมพ์ / สร้างชื่อไฟล์ทั้งหมด ie ตัดต่อ 0.png 1.png 2.png 3.png 4.png ...
แดน

4
คุณดีที่สุด! ฉันค้นหาสิ่งนี้มาทั้งชีวิต!
Robin

@ RodrigoGraçaดูคู่มือการใช้งานและตัวอย่างเกี่ยวกับการจัดการความโปร่งใส + พื้นหลัง
emcconville

มันใช้งานร่วมกันระหว่าง jpg และ png ได้เช่นกัน ขอบคุณ
joydeep bhattacharjee

3
[0-5].pngจะสร้างไฟล์ "0.png, 1.png, 2.png, 3.png, 4.png, 5.png" ออกมาหกไฟล์ แต่คุณtile 5x1จะใช้เวลาเพียงห้าไฟล์เท่านั้นทำให้คุณมีไฟล์เอาต์พุตสองไฟล์ นี้ก็ควรจะใช้หรือ[0-4].png -tile 6x1
อาร์บาร์เร็ตต์

81

ImageMagick มีเครื่องมือบรรทัดคำสั่งชื่อ ' แปลง ' เพื่อรวมรูปภาพในแนวนอนหรือเพื่อวัตถุประสงค์อื่น ฉันได้ลองใช้คำสั่งนี้แล้วและทำงานได้อย่างสมบูรณ์แบบกับเคสของคุณ:
ในการรวมรูปภาพในแนวนอน:
convert +append *.png out.png

ในการซ้อนภาพในแนวตั้ง:
convert -append *.png out.png


ที่สามารถเพิ่มเพื่อการดำเนินการที่กำหนดเอง Thunar ในรูปแบบนี้ (อดีตที่จะเข้าร่วมในแนวตั้งขึ้น = convert -append %F joined-image.pngเมือง.) ภาพที่เลือกทั้งหมดจะรวมเป็นหนึ่ง png ตามลำดับตัวอักษร

1
หากใช้ ImageMagick 7+ คุณจะต้องวางภาพที่คุณกำลังทำงานอยู่ก่อนหน้าพารามิเตอร์:convert *.png +append out.png
Mazuhl


1

หากภาพมีความสูงไม่เท่ากัน

คุณสามารถกำหนดความสูงสำหรับทั้งหมดได้ด้วย-resizeตัวเลือกเช่นกำหนดความสูง 400 พิกเซล:

convert +append image_1.png image_2.png -resize x400 new_image_conbined.png

0

ทุกคนที่ใช้MiniMagickอัญมณีรางรถไฟสามารถใช้เครื่องมือในตัวเพื่อรวมภาพ:

# Replace this with the path to the images you want to combine
images = [
  "image1.jpg",
  "image2.jpg"
]

processed_image = MiniMagick::Tool::Montage.new do |image|
  image.geometry "x700+0+0"
  image.tile "#{images.size}x1"
  images.each {|i| image << i}
  image << "output.jpg"
end

ดูเอกสารสำหรับ#geometryตัวเลือกในการจัดการการปรับขนาดและการจัดวาง ตัวอย่างปัจจุบันจะปรับขนาดรูปภาพให้มี700pxความสูงโดยที่ยังคงอัตราส่วนของรูปภาพไว้ +0+0จะวางภาพโดยไม่มีช่องว่างระหว่างภาพ

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