PNG फ़ाइलों से GIF एनीमेशन बनाना


83

क्या फाइलों के gifएक सेट से एक एनीमेशन बनाने के लिए एक उपकरण है png?

मैंने ImageMagick सुइट convertसे कमांड की कोशिश की , लेकिन यह हमेशा सफल नहीं होता है। इसके अलावा, मेरे पास इसके साथ कई मुद्दे हैं:

  1. मैं नहीं बता सकता कि प्रगति क्या है।
  2. कोई फर्क नहीं पड़ता कि मैं क्या कोशिश -delayकरता हूं, झंडा जीआईएफ एनीमेशन के फ्रेम दर को नहीं बदलता है।
  3. convertफ़ाइलों के नाम के वर्णमाला क्रम के आधार पर फ्रेम ऑर्डर निर्धारित करता है। इसका मतलब यह है कि मुझे 0 जोड़कर इसे ठीक करने के बाद name500.pngठीक से रखा जाएगा name50.pngया नहीं, name450.pngलेकिन यह कष्टप्रद है।

[समाचार] उबंटू स्टैकएक्सचेंज और यूनिक्स स्टैकएक्सचेंज के बीच एक बड़े पैमाने पर ओवरलैप है। मैंने यहां कुछ सूत्र वर्गीकृत करने की कोशिश की ।
hhh

आइटम 3 के बारे में। आप convertफ़ाइलों को छाँटने के बाद भी उपयोग कर सकते हैं । शायद, कुछ इस तरह काम करता हैfiles=$(ls name*png | sort -n -tname -k1); convert $files animation.gif
altroware

प्वाइंट 1: परिवर्तित एक है -monitorपैरामीटर है कि इस प्रक्रिया को ट्रैक करता है
Curlew

जवाबों:


50

Ffmpeg के नए संस्करणों में no -sameq ( faq देखें ) लेकिन GIF का समर्थन नहीं है।

ffmpeg -i %03d.png output.gif

जहां% 03d 3 अंकों में फ्रेम आईडी है।

आप ffmpegछवियों के अनुक्रम से एक फिल्म बनाने के लिए उपयोग करने की कोशिश कर सकते हैं और फिर फिल्म को जीआईएफ एनीमेशन (फिर से उपयोग करके ffmpeg) में बदल सकते हैं।

# cf. http://pages.uoregon.edu/noeckel/MakeMovie.html

# first convert an image sequence to a movie
ffmpeg -sameq -i %03d.jpg output.mp4

# ... and then convert the movie to a GIF animation
ffmpeg -i output.mp4 -pix_fmt rgb24 -s qcif -loop_output 0 output.gif

10
यह निर्देश पुराना है।
highmaintenance

3
sameqविकल्प अब उपलब्ध नहीं है। इसके अलावा, मेरे लिए, यह मूल छवि फ़ाइलों को अधिलेखित करता है और एक वैध फिल्म फ़ाइल का उत्पादन नहीं करता है।
परत

-sameqवहां कोड छोड़ने की क्या बात है ? आप output.mp4एक अस्थायी के रूप में एक हानिपूर्ण वीडियो प्रारूप ( ) का उपयोग क्यों करना चाहेंगे ? और यदि हां, तो बहुत उच्च बिटरेट के बजाय इनपुट के रूप में "समान गुणवत्ता" क्यों? उस से कलाकृतियों बस GIF एनकोडर के लिए चीजों को बदतर बनाने जा रहा है। यदि आपको किसी वीडियो को अस्थायी के रूप में उपयोग करने की आवश्यकता है, तो आप हफीव की तरह कुछ दोषरहित उपयोग करना चाहेंगे। या बिना ट्रांसकोडिंग वाला MJPEG, बस इनपुट Jpegs को MJPEG में रिमूव करें। ( -codec:video copy)।
पीटर कॉर्ड्स

80

convertऐसा करने के लिए एक आसान कमांड लाइन उपकरण है। cdआपके png -files वाले फ़ोल्डर पर जाएं और यह आदेश चलाएँ:

convert -delay 10 -loop 0 *.png animation.gif

स्रोत: http://ubuntuforums.org/showthread.php?t=1132058


5
प्रश्न में उल्लेख है convertऔर इसका उपयोग करने में कुछ समस्याएं हैं। आपका उत्तर उनमें से किसी को भी संबोधित नहीं करता है।
Mat

3
ImageMagick संस्करण के रूप में 6.8.7-4 2013-11-02 Q16इसने मेरे लिए काम किया।
रूडी मटेला

7
यह काम करता है, लेकिन 1010 * 10ms, बहुत तेजी से मतलब है। 1001 सेकंड की देरी है ।
ऐनी वैन रोसुम

7
विकल्प का उपयोग करें -dispose previousया -dispose 2यदि आप पारदर्शी PNGs के साथ काम कर रहे हैं
H Phi Phong

4
खुद पर ध्यान दें: ब्रेस का विस्तार छवियों की सूची को तर्क के रूप में निर्दिष्ट करने के लिए सहायक हो सकता है, उदाहरण के pic_{0..20..2}.pngलिए pic_0.png, pic_2.pngसभी तरह सेpic_20.png
Yibo यांग

19

convertके --delayविकल्प केवल कमांड लाइन पर अगली छवि पर लागू होता है। तो convert -delay 10 *केवल पहले फ्रेम की देरी को 0.1 सेकंड पर सेट करेगा। विकल्प को दोहराया जाना चाहिए:

convert $(for a in *; do printf -- "-delay 10 %s " $a; done; ) result.gif

अपनी छँटाई की आवश्यकता के लिए, कन्वर्ट फ्रेम को सॉर्ट नहीं करता है, शेल ग्लोबिंग *करता है। यदि आप जानते हैं कि आपके फ़्रेम 0 से 700 तक हैं, तो आप संख्याओं की गणना स्वयं कर सकते हैं:

convert $(for ((a=0; a<700; a++)); do printf -- "-delay 10 name%s.png " $a; done;) result.gif

5
मुझे इस व्यवहार का अनुभव नहीं है convert, क्योंकि मेरे लिए प्रत्येक छवि के convert -delay 1000 -loop 0 *.png animation.gifबीच एक 10s विलंब है ।
परत

1
आप कमांड के संस्करण प्रकार का भी उपयोग कर सकते हैं ls। यही कारण है:convert -delay 1000 $(ls -v name*png) output.gif
एरिक

7

अपडेट करें:

का प्रयोग करें convertpng करने वाली gif के लिए है, तो का उपयोग gifsicle एनीमेशन के लिए। यह सुनिश्चित करने के लिए यह सभी समाधान करने के लिए एक ऐप नहीं है, लेकिन स्क्रिप्ट करने योग्य है।


GIMP एनिमेटेड जिफ़ बना सकता है और समय / देरी और दोहराने आदि के लिए नियंत्रण प्रदान करता है


3
मैं जिम्प के बारे में जानता हूं, लेकिन मुझे नहीं पता कि इसे कैसे स्क्रिप्ट किया जाए। इसके अलावा, एनीमेशन बनाने के लिए जिम्प का उपयोग करना एक तोप के साथ एक मक्खी को मारने की तरह है
योताम

1
यह एक बुरा विचार है; गुणवत्ता भयानक होगी, क्योंकि प्रत्येक फ्रेम को अलग से निर्धारित किया जाएगा।
क्लेमेंट

2

ImageMagick एक अच्छी गुणवत्ता का GIF एनीमेशन उत्पन्न कर सकता है। इस वीडियो को देखें - http://www.youtube.com/watch?v=OFusYizJ-bA


6
यूनिक्स और लिनक्स में आपका स्वागत है! आमतौर पर हम साइट पर उत्तर पसंद करते हैं जो अपने दम पर खड़े होने में सक्षम हैं - लिंक महान हैं, लेकिन अगर उस लिंक ने कभी भी उत्तर को तोड़ दिया तो अभी भी उपयोगी होने के लिए पर्याप्त जानकारी होनी चाहिए। अधिक विवरण शामिल करने के लिए कृपया अपने उत्तर को संपादित करने पर विचार करें। अधिक जानकारी के लिए FAQ देखें ।
स्लम

ऊपर एक उपयोगी टिप्पणी क्या है ....
ल्यूक

convert -delay 200 -loop 0 *.jpg output.gif
ल्यूक

2

ffmeg महत्वपूर्ण GIF विकल्प + परीक्षण डेटा

इस उत्तर के पूरक के लिए :

wget -O opengl-rotating-triangle.zip https://github.com/cirosantilli/media/blob/master/opengl-rotating-triangle.zip?raw=true
unzip opengl-rotating-triangle.zip
cd opengl-rotating-triangle
ffmpeg \
  -framerate 60 \
  -pattern_type glob \
  -i 'tmp.*.png' \
  -r 15 \
  -vf scale=512:-1 \
  out.gif \
;

परीक्षण डेटा के साथ उत्पन्न किया गया था: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#143244272

ffmpegमैं जिन महत्वपूर्ण विकल्पों पर प्रकाश डालना चाहता था वे हैं:

  • -patter_type glob: छवियों का चयन करने के लिए सुविधाजनक तरीका है
  • -framerate 60और -r 15: इनपुट छवियों पर 60 एफपीएस मान लें ( ffmpegअन्यथा पता नहीं चल सकता है क्योंकि वीडियो प्रारूपों में छवियों में कोई एफपीएस डेटा नहीं है), प्रत्येक 4 छवियों में से एक को चुनें ताकि आकार कम हो ( 4 == 60 / 15)
  • -vf scale=512:-1: आमतौर पर आकार को कम करने और अंतरिक्ष को बचाने के लिए चौड़ाई, पैमाने की ऊंचाई को आनुपातिक रूप से सेट करें

यह सभी देखें:

उबंटू 18.10 में परीक्षण किया गया, ffmpeg 4.0.2।


-1

बिंदु 2 के संबंध में

ImageMagick "डिस्प्ले" का संस्करण मेरे पास है (ImageMagick 6.7.2-7 2017-01-12) एनिमेटेड जिफ़ का निर्माण करने के लिए कन्वर्ट कमांड का उपयोग करके निर्धारित फ्रेम दर को अनदेखा करता है। फायरफॉक्स की तरह चेतन जिफ को देखने के लिए एक और कार्यक्रम का प्रयास करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.