मैं चित्रों के .gif
दिए गए सेट से एक एनिमेटेड चित्र बनाना चाहता हूं .jpg
।
मैं इसे कमांड लाइन से करना पसंद करूंगा, इसलिए कमांड लाइन टूल्स का बहुत स्वागत होगा।
मैं चित्रों के .gif
दिए गए सेट से एक एनिमेटेड चित्र बनाना चाहता हूं .jpg
।
मैं इसे कमांड लाइन से करना पसंद करूंगा, इसलिए कमांड लाइन टूल्स का बहुत स्वागत होगा।
जवाबों:
आप ImageMagick पैकेज का उपयोग कर सकते हैं । कमांड का उपयोग करके इसे स्थापित करें:
sudo apt-get install imagemagick
अब आप gif
चित्रों की संख्या ( jpg
) का उपयोग करके बना सकते हैं :
convert -delay 20 -loop 0 *.jpg myimage.gif
-resize 50%
।
-deconstruct
:। मैंने यह भी पाया है कि ImageMagick बहुत स्मृति भूख लगी है, बेंचमार्क देखें: askubuntu.com/a/1102183/52975
convert -delay 0 -loop 0 *.tif myanimated.gif
अच्छी तरह से काम किया, 720 tif फ़ाइलों पर
@Maythux उत्तर को पूरा करने के लिए:
-resize
विकल्प का उपयोग कर सकते हैं :मेरे मामले में, मेरे पास 4608x3456 चित्र हैं और 32 चित्रों के लिए उत्पन्न gif 300M से अधिक था
convert -resize 20% -delay 20 -loop 0 *.jpg myimage.gif
या
convert -resize 768x576 -delay 20 -loop 0 *.jpg myimage.gif
*.jpg
संख्यात्मक मानों के साथ व्यवहार करते समय आप थोड़ा सा चूसते हैं, आप बिना पिए हुए चित्रों के साथ एक जीआईएफ उत्पन्न कर सकते हैं।
$ ls|cat
21-33-26_1.jpg
21-33-26_10.jpg // <--- this one
21-33-26_2.jpg
21-33-26_3.jpg
21-33-26_4.jpg
21-33-26_5.jpg
21-33-26_6.jpg
21-33-26_7.jpg
21-33-26_8.jpg
21-33-26_9.jpg
21-33-28_1.jpg // <--- should be here
21-33-28_2.jpg
21-33-28_3.jpg
...
जैसा कि शॉट्स बहुत जल्दी (10 / s) ले लिए गए थे, उन सभी में एक ही संशोधन समय है और आप ls -t
उदाहरण के लिए उपयोग नहीं कर सकते । Ubuntu पर आप ls -v
इसके बजाय, कुछ का उपयोग कर सकते हैं :
convert -resize 768x576 -delay 20 -loop 0 `ls -v` myimage.gif
मैक ओएस एक्स पर संख्यात्मक रूप से छंटनी काफी मुश्किल है, हालांकि, मुझे लगता है कि आपको एक कस्टम स्क्रिप्ट बनाने की आवश्यकता होगी।
find
, sort
ब्रेस विस्तार, और इतने पर। ls
उपकरण बात इस तरह का के लिए बेहद अनुपयुक्त है। का उपयोग करें find
। सीखने की अवस्था थोड़ी है, लेकिन यह इसके लायक है।
इसे आप GIMP के साथ आसानी से कर सकते हैं। यदि यह पहले से स्थापित नहीं है तो पहले इसे इंस्टॉल करें
sudo apt-get install gimp
GIMP से फाइल पर जाएं -> परतों के रूप में खोलें, सभी पीएनजी को अपनी परत पर खोलने के लिए।
यहां से आप लेयर्स पर एडिट कर सकते हैं और एक बार कर लेने के बाद File -> Export As पर जाएं । संवाद से फ़ाइल प्रकार को GIF पर सेट करना सुनिश्चित करें।
वहां से आप GIF एक्सपोर्ट ऑप्शन में जाएंगे। 'ऐस एनिमेशन ' विकल्प पर टिक करें और आवश्यकतानुसार पैरामीटर सेट करें।
ffmeg solution + परीक्षण डेटा
Ubuntu 18.10, ffpmeg 4.0.2-2, ImageMagick 6.9.10-8 के रूप में, मैंने पाया है कि ffmpeg बहुत तेज है और बहुत कम मेमोरी का उपयोग करता है ।
सबसे सरल रूपांतरण कमांड है:
ffmpeg \
-framerate 60 \
-pattern_type glob \
-i '*.png' \
-r 15 \
-vf scale=512:-1 \
out.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
परीक्षण डेटा के साथ उत्पन्न किया गया था: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324622 और 256 1024x1024 PNG चित्र शामिल हैं।
और यहां एक और परीक्षण डेटा है जिसे आप सीधे अपने ब्राउज़र में उत्पन्न कर सकते हैं! https://stackoverflow.com/questions/19235286/convert-html5-canvas-sequence-to-a-video-file/57153718#57153718
ffmpeg
मैं जिन महत्वपूर्ण विकल्पों पर प्रकाश डालना चाहता हूं वे हैं:
-pattern_type glob
: छवियों का चयन करने के लिए सुविधाजनक तरीका है
-framerate 60
: इनपुट छवियों पर 60 एफपीएस मान लें, और उसी एफपीएस का उत्पादन करें।
ffmpeg
अन्यथा नहीं जान सकते, क्योंकि कोई एफपीएस डेटा छवियों में नहीं है जैसा कि वीडियो प्रारूपों में है।
256 इनपुट फ़्रेम को समाप्त होने में लगभग 4 सेकंड लगते हैं।
-r 15
: वैकल्पिक। प्रत्येक 4 छवियों को चुनें ताकि आकार कम हो ( 4 == 60 / 15
)।
इसके साथ, का identify out.gif
कहना है कि GIF में केवल 64 फ़्रेम होते हैं।
इसे खेलने में अभी भी 4 सेकंड का समय लगता है, इसलिए चीजों को मैच करने में देरी होती है।
-vf scale=512:-1
: वैकल्पिक। आमतौर पर आकार को कम करने और अंतरिक्ष को बचाने के लिए, चौड़ाई, स्केल ऊंचाई आनुपातिक रूप से सेट करें।
ImageMagick को काम पर लाने के लिए, मुझे सबसे पहले इसकी डिस्क और मेमोरी लिमिट को संशोधित करना पड़ा, /etc/ImageMagick-6/policy.xml
जैसा कि यहाँ बताया गया है: https://superuser.com/questions/1178666/imagemagick-convert-quits-after-some-ages
यह सभी देखें:
ImageMagick बनाम ffmpeg बेंचमार्क
मैंने आदेशों की तुलना की:
/usr/bin/time -v convert *.png -deconstruct -delay 1.6 out-convert.gif
/usr/bin/time -v ffmpeg \
-framerate 60 \
-pattern_type glob \
-i '*.png' \
out-ffmpeg.gif \
;
आदेशों का निर्माण उन आउटपुटों को उत्पन्न करने के लिए किया गया था जो तुलनात्मक वैध बनाने के लिए यथासंभव करीब हैं:
/usr/bin/time -v
: अधिकतम मेमोरी उपयोग को खोजने के लिए उपयोग किया जाता है: https://stackoverflow.com/questions/774556/peak-memory-usage-of-a-linux-unix-process
-deconstruct
: जीआईएफ छवियों को जीआईएफ को छोटा करने के लिए पिछले फ्रेम से केवल न्यूनतम संशोधित आयत हो सकता है।
ffmpeg
उन डिफ़ॉल्ट रूप से भिन्न होता है, लेकिन ImageMagick -deconstruct
का उपयोग नहीं किया जाता है।
आप मूल रूप से हर बार ImageMagick के साथ उस विकल्प का उपयोग करना चाहते हैं।
हम इसके साथ अंतर देख सकते हैं:
identify out.gif
संपीड़ित संस्करण के साथ, सभी फ़्रेमों में प्रारंभिक एक की तुलना में छोटे आकार होते हैं, जैसे:
out.gif[0] GIF 1024x1024 1024x1024+0+0 8-bit sRGB 256c 16.7865MiB 0.010u 0:00.010
out.gif[1] GIF 516x516 1024x1024+252+257 8-bit sRGB 256c 16.7865MiB 0.010u 0:00.010
out.gif[2] GIF 515x520 1024x1024+248+257 8-bit sRGB 256c 16.7865MiB 0.010u 0:00.010
इस उदाहरण में, दूसरा फ्रेम 516x516
पूर्ण 1024x1024 के बजाय है, और इसे ऑफसेट पर रखा गया है 252+257
। इसलिए इसमें सिर्फ मध्य त्रिकोण है।
यह भी देखें: मैं ImageMagick का उपयोग करके एनिमेटेड GIF फ़ाइल का आकार कैसे बदल सकता हूं?
-delay
: मान जो कि 60FPS से मेल खाता है ffmpeg
। रूपांतरण प्रदर्शन के लिए कोई बात नहीं होनी चाहिए, लेकिन मैं इसे जोखिम में नहीं डालना चाहता।
आउटपुट GIF का आकार समान होता है और यह समान रूप से समान दिखाई देता है।
हमें ImageMagick के लिए मिलता है:
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:56.16
Maximum resident set size (kbytes): 2676856
और ffmpeg के लिए:
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:04.41
Maximum resident set size (kbytes): 97172
जिससे हम देखते हैं कि:
टेस्ट हार्डवेयर: लेनोवो थिंकपैड P51 लैपटॉप , इंटेल कोर i7-7820HQ, 32GB (16 + 16) DDR4 2400MHz SODIMM, 512GB SSD PCIe TLC OPAL2।
-r
और -v
आदेश दिया, फिर भी आउटपुट जीआईएफ मूल पीएनजी फाइलों की तुलना में बहुत कम गुणवत्ता का है। Pif फाइल्स की तरह ही जिफ की क्वालिटी कैसे रखें?
-framerate 60 -r 60
। ImageMagick टूल के साथ उत्पन्न GIF और इनपुट छवियों का निरीक्षण identify
करें और यह जानने की कोशिश करें कि क्या चल रहा है।
आप इमेजमैगिक पैकेज में शामिल कन्वर्ट नामक प्रोग्राम का उपयोग कर सकते हैं। यह कमांड लाइन संचालित है, लेकिन उपयोग करने में बहुत आसान है। इसे या तो सॉफ़्टवेयर केंद्र के माध्यम से स्थापित करें, या कमांड प्रॉम्प्ट पर जाएं और टाइप करें
sudo apt-get install imagemagick
अब .gif बनाने के लिए।
convert -delay 100 -size 100x100 xc:SkyBlue \
-page +5+10 balloon.gif -page +35+30 medical.gif \
-page +62+50 present.gif -page +10+55 shading.gif \
-loop 0 animation.gif
* नोट करें कि उपरोक्त उदाहरण इमेज मैजिक उदाहरणों से सीधा है
convert -delay 20 -loop 0 *.png out.gif
एक लूपिंग GIF बनाता है।