ฉันจะแบ่งไฟล์เคลื่อนไหว. gif ที่เคลื่อนไหวเป็นเฟรมส่วนประกอบได้อย่างไร


43

ฉันจะแยกไฟล์. gif แบบเคลื่อนไหวได้อย่างง่ายดายได้อย่างไร ฉันต้องการดูแต่ละเฟรม

ฉันอยากจะไม่ส่งออกทุกเฟรมไปยังไดเรกทอรี ฉันต้องการดูพวกเขาเป็นรายบุคคลในแอปพลิเคชันเดียวถ้าเป็นไปได้

เป็นไปได้บน Linux?

คำตอบ:


51

ลองเปิดดูด้วย The Gimp; ฉันเชื่อว่ามันจะเปิด gif แบบเคลื่อนไหวด้วยหนึ่งเลเยอร์ต่อเฟรม

คุณบอกว่าคุณไม่ต้องการที่จะถ่ายโอนเฟรมทั้งหมดไปยังไฟล์ในไดเรกทอรี แต่ฉันจะบอกคุณว่าจะทำอย่างไรต่อไป :) ติดตั้ง ImageMagick หรือ graphicsmagick จากนั้น:

สำหรับ ImageMagick:

convert animation.gif target.png

สำหรับ graphicsmagick:

gm convert animation.gif target.png

มันจะเขียนเฟรมไปยัง target0.png, target1.png, ... และอื่น ๆ จากนั้นคุณสามารถป้อนไดเรกทอรีและเรียกใช้eogมันจะแสดงเฟรมทั้งหมดในแอปพลิเคชันเดียวกัน rm target*.pngเมื่อคุณไม่จำเป็นต้องเฟรมเพียง


Imagemagick ยอดเยี่ยมมาก !!
fccoelho

1
การแปลง imagemagic ล้มเหลวสำหรับฉันเนื่องจากดูเหมือนว่าภาพแต่ละภาพของ GIF ถูกแสดงเป็นเลเยอร์พื้นหลังโปร่งใสใหม่และการแปลงให้เลเยอร์โปร่งใสเหล่านั้น: upload.wikimedia.org/wikipedia/commons/5/5d/AstarExample.gif
Ciro Santilli 新疆改造中心法轮功六四事件

ฉันเปิด gif ด้วย gimp แต่ฉันยังไม่รู้วิธีดูแต่ละเฟรม - ฉันเพิ่งเห็นเฟรมสุดท้าย ฉันทำงานกับแอนิเมชั่นนี้: /tmp/Non-Native-American-Nations-Territorial-Claims-over-NAFTA-countries-1750-2008.gif
nealmcb

3
GraphicsMagick จำเป็นต้องอยู่ในรูปแบบที่gm convert some-image.gif +adjoin some-image%d.pngจะทำงาน หรือgm convert some-image.gif -coalesce +adjoin some-image%d.pngสำหรับเฟรมย่อยขนาดต่าง ๆ ที่มีออฟเซ็ตต่างกัน
l --marc l

1
ที่ระบุconvertคิดถึง-coalesceตัวเลือกซึ่งเป็นสิ่งจำเป็นสำหรับสิ่งที่ผู้ใช้คาดหวัง
มาร์คัส

41

หากเฟรมต่าง ๆ มีพื้นที่โปร่งใสและสร้างซึ่งกันและกันคุณสามารถใช้convertคำสั่งด้วย-coalesceตัวเลือก "" เพื่อสร้างชุดของไฟล์เป้าหมาย -0png, target-1.png เป็นต้นซึ่งแต่ละเฟรมจะรวมลำดับก่อนหน้านี้ ภาพ:

convert -coalesce animation.gif target.png

1
ความคิดเห็นที่ดี แต่ต้องการคำอธิบาย โดยทั่วไปจะแก้ปัญหา @cirosantilli ที่มี ImageMagick กลับสิ่งที่ดูชอบการปรับปรุงไปยังพื้นที่หน้าจอที่เฉพาะเจาะจง -coalesce ผสานการปรับปรุงเหล่านั้นเพื่อให้การเรนเดอร์เสร็จสิ้น
AnthonyVO

3
ควรสังเกตว่า (ในขณะที่ ImageMagick เวอร์ชั่น 6.7.7) ดูเหมือนว่ามีการรั่วไหลของหน่วยความจำ: อย่าพยายาม-coalesceกับ.gifscreencasts ยาวมันอาจจะใช้หน่วยความจำที่มีอยู่ทั้งหมดและอาจแขวนระบบทั้งหมดของคุณ
leftaroundabout

4
คุณสามารถระบุชื่อไฟล์ที่ส่งออกผ่านทางเช่น:convert -coalesce animation.gif target.%04d.png
Trevor Boyd Smith

2

สำหรับผมด้วยImageMagick(ข้อมูลรุ่น: 6.8.9-9 Q16 x86_64 2017-07-31)

convert gif.gif gif.pdf

สร้าง pdf โดยให้แต่ละหน้าเป็นเฟรมของอินพุต gif จากนั้นคุณสามารถเลื่อนดูเฟรมในแอปพลิเคชันการดู PDF ที่คุณเลือก


ดูเหมือนซับซ้อนเกินไปและไม่เหมือนสิ่งที่ OP ต้องการ
David Foerster

ที่จะได้รับแต่ละเฟรมเป็นหน้า .pdf เป็นความคิดที่ดีเพียงแค่ใช้เวลาในการพิจารณาว่าวิธีการนี้อาจจะมีรถและคุณจำเป็นต้องปรับแต่งแอพลิเคชัน
รัก

2

ใช้ mpv เปิดบนเดสก์ท็อป ลาก gif ลงไป ถ่ายภาพหน้าจอของเฟรมเดี่ยว / ที่คุณต้องการด้วยปุ่ม s คุณอาจหยุดชั่วคราวหาก GIF ของคุณนั้นเร็ว วิธีที่รวดเร็วมาก

===========

คุณอาจต้องการใช้การตั้งค่าเหล่านี้ก่อน[เมื่อตั้งค่าแล้วคุณไม่ต้องทำอีก] :

gedit ~/.config/mpv/mpv.conf

และป้อนและบันทึก:

--screenshot-format ตัวเลือก: jpg jpeg png (ค่าเริ่มต้น: jpg)

เพื่อคุณภาพ png สูงสุด:

--screenshot-format=png
--screenshot-png-compression=9

หรือถ้าคุณต้องการ jpg

--screenshot-jpeg-quality จำนวนเต็ม (0 ถึง 100) (ค่าเริ่มต้น: 90)

ใช้mpv --list-options สำหรับรายละเอียดอื่น ๆ


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