ภาพเคลื่อนไหว gifs ไทล์


9

มีวิธีใช้ Imagemagic / การตัดต่อภาพเคลื่อนไหว GIF แบบวนลูป (ผสมกับแบบไม่เคลื่อนไหว) ไหม?

นั่นคือฉันต้องการเชื่อมต่ออนิเมชั่นในอวกาศไม่ใช่เวลา ฉันรู้ว่าจำนวนเฟรมและระยะเวลาในการเคลื่อนไหวอาจทำให้ไม่สามารถรวมภาพเคลื่อนไหวสองภาพได้อย่างเป็นระเบียบ แต่ฉันก็โอเคกับโปรแกรมที่ทำการประมาณและเดาและขยาย / ทำซ้ำเฟรมตราบใดที่เฟรมทั้งหมดอยู่ในรูปแบบบางอย่าง

ฉันได้ลองแล้ว

convert *.gif -append output.gif

และ

montage *.gif -mode concatenate -tile x1 output.gif

แต่สิ่งเหล่านี้ทั้งสองถือว่า gif แบบเคลื่อนไหวเป็นแบบหลายรายการที่ไม่ใช่แบบเคลื่อนไหว

ฉันคิดว่าฉันอาจจะเขียนสคริปต์เพื่อแยกภาพเคลื่อนไหวออกจากกันโดยใช้เฟรมทำซ้ำ / ขยายลูปที่สั้นลงตามความจำเป็นเพื่อให้ตรงกับลูปที่ยาวที่สุดทำซ้ำ gif แบบไม่เคลื่อนไหวสำหรับเฟรมจำนวนมากอยู่ในแอนิเมชั่นที่ยาวที่สุด ลงในเฟรมขนาดใหญ่เดี่ยวด้วย-appendแล้วรวมเฟรมขนาดใหญ่เหล่านั้นเป็นหนึ่ง GIF ขนาดใหญ่ แต่ฉันไม่ต้องการที่จะบูรณาการล้อถ้าเป็นไปได้โดยคำสั่งง่ายๆ

แน่นอนว่าฉันเปิดรับตัวเลือกฟรีอื่น ๆ นอกเหนือจาก imagemagick



2
ฉันจะเอามันไปเพราะอาจไม่ได้ตั้งใจ เป็นความคิดเห็นที่ร้ายแรง ใช่ฉันต้องการไทล์ GIF แต่อย่างถาวรไม่ใช่ในรูปแบบ HTML ขอบคุณสำหรับลิงค์ ฉันจะบันทึก GIF เฉพาะนั้นไว้เพื่อใช้ในภายหลัง
tsbertalan

1
@tsbertalan ในที่สุดคุณคิดออกไหม
Seb Barre

คำตอบ:


1

ดูเหมือนว่าคุณต้องการจับคู่ภาพเคลื่อนไหวหลายภาพในช่วงเวลาหนึ่ง แต่มันจะใช้โปรแกรมเพื่ออ่านแต่ละเฟรมและความล่าช้าของมันจากนั้นให้ส่งออกเฟรมนั้นด้วยความถี่เป็นระยะ ๆ จนกว่าจะถึงความล่าช้า เช่น: 1 เฟรม, ล่าช้า 1 วินาทีและ 'ความถี่' ของคุณคือ 100ms ดังนั้นคุณต้องการ 10 เฟรมที่ 100ms เขียนออกมาหรือไม่ แล้วแปลงเป็นภาพตัดต่อเชิงเส้นหรือไม่?

ซึ่งจะต้องใช้โปรแกรมหรือสคริปต์ที่แข็งแรงในการประมวลผลแบบนั้นและคุณต้องกำหนด 'ความถี่' ของคุณ (100ms ที่นี่)

แต่มันใช้งานได้ดี: (gifsicle เป็นแพ็คเกจการตัดต่อเป็นส่วนหนึ่งของแพ็คเกจ imagemagick)

gifsicle --unoptimize cool_animation.gif | \
  montage -tile x1 - linear_frames.png

(บรรทัดใช้งานไม่ได้เพื่อการอ่าน)

บรรทัดแรกแบ่ง gif ที่เข้ามาออกเป็นแต่ละเฟรม (ไปยัง stdout) แต่มีชั้นเต็ม เริ่มแรกโดยไม่มีตัวเลือก - เพิ่มประสิทธิภาพมันจะให้เฟรมแรก แต่เฟรมต่อมามีเฉพาะสิ่งที่เปลี่ยนแปลงในแต่ละครั้ง สร้างมาเพื่องานจิตรกรรมชิ้นเอกแปลก ๆ !

บรรทัดที่สองสร้างเอาต์พุตเชิงเส้นโดยถ่ายภาพแต่ละเฟรม (จาก stdin) และจัดเรียงตามลำดับที่คุณระบุ 'x1' เพื่อจัดเรียงตามแนวนอน

คุณสามารถแทนที่ชื่อไฟล์เดียว (cool_animation.gif) ด้วยชื่ออื่นหรือแม้กระทั่งสัญลักษณ์แทน * .gif

ฉันไม่แน่ใจว่านี่คือสิ่งที่คุณกำลังมองหา


เมื่อแก้ไขgifsicle --colors=255 DATA.gif | gifsicle --unoptimize | montage -tile x1 - linear_frames.pngเป็นภาพทดสอบของƬᴇcʜιᴇ007สิ่งนี้ให้ฉันimgur.com/a/Likr9 ; ไม่ใช่สิ่งที่ฉันกำลังมองหา ฉันจำวัตถุประสงค์ดั้งเดิมไม่ได้ ฉันคิดว่าฉันคงเขียนสคริปต์เพื่อแยกมันออกมาอย่างชัดเจน
tsbertalan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.