আমি .gif
প্রদত্ত .jpg
ছবির সেট থেকে একটি অ্যানিমেটেড ছবি তৈরি করতে চাই ।
আমি কমান্ড লাইন থেকে এটি করতে পছন্দ করব, সুতরাং কমান্ড লাইন সরঞ্জামগুলি খুব স্বাগত জানায়।
আমি .gif
প্রদত্ত .jpg
ছবির সেট থেকে একটি অ্যানিমেটেড ছবি তৈরি করতে চাই ।
আমি কমান্ড লাইন থেকে এটি করতে পছন্দ করব, সুতরাং কমান্ড লাইন সরঞ্জামগুলি খুব স্বাগত জানায়।
উত্তর:
আপনি ইমেজম্যাগিক প্যাকেজটি ব্যবহার করতে পারেন । কমান্ডটি ব্যবহার করে এটি ইনস্টল করুন:
sudo apt-get install imagemagick
এখন আপনি ব্যবহার করে একটি gif
সংখ্যা ( jpg
) ব্যবহার করে তৈরি করতে পারেন :
convert -delay 20 -loop 0 *.jpg myimage.gif
-resize 50%
।
-deconstruct
। আমি এটিও পেয়েছি যে ইমেজম্যাগিক
convert -delay 0 -loop 0 *.tif myanimated.gif
720 টিফ ফাইলগুলিতে খুব সুন্দরভাবে কাজ করেছেন
@ মাইথাক্স উত্তরটি সম্পূর্ণ করতে:
-resize
বিকল্পটি ব্যবহার করতে পারেন :আমার ক্ষেত্রে, আমার 4608x3456 চিত্র রয়েছে এবং উত্পন্ন জিএফ 32 টি চিত্রের জন্য 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
উদাহরণস্বরূপ আপনি ব্যবহার করে চালাকি করতে পারবেন না । উবুন্টুতে আপনি ls -v
পরিবর্তে ব্যবহার করতে পারেন , এরকম কিছু:
convert -resize 768x576 -delay 20 -loop 0 `ls -v` myimage.gif
ম্যাক ওএস এক্সে সংখ্যাগতভাবে বাছাই করা বেশ জটিল, যদিও আমি মনে করি আপনাকে একটি কাস্টম স্ক্রিপ্ট তৈরি করতে হবে।
find
, sort
ব্রেস প্রসারিত ইত্যাদি on ls
টুল জিনিস এই ধরনের কুখ্যাতিপূর্ণভাবে অনুপযুক্ত হয়। ব্যবহার find
। কিছুটা শেখার বক্ররেখা রয়েছে তবে এটি মূল্যবান।
আপনি জিআইএমপি দিয়ে সহজেই এটি করতে পারেন। এটি ইতিমধ্যে ইনস্টল না থাকলে প্রথমে এটি ইনস্টল করুন
sudo apt-get install gimp
জিআইএমপি থেকে ফাইল -> সমস্ত png এর নিজস্ব স্তরে খোলার জন্য স্তর হিসাবে খুলুন ।
এখান থেকে আপনি স্তরগুলিতে সম্পাদনা সম্পাদন করতে পারেন এবং একবার হয়ে গেলে, ফাইল -> হিসাবে রফতানিতে যান । কথোপকথন থেকে ফাইলের ধরণটি জিআইএফ-তে সেট করতে ভুলবেন না।
সেখান থেকে আপনি জিআইএফ রফতানি বিকল্পগুলিতে যাবেন। ' অ্যানিমেশন হিসাবে ' বিকল্পটি টিক দিন এবং প্রয়োজনীয় হিসাবে প্যারামিটার সেট করুন।
ffmeg সমাধান + পরীক্ষার তথ্য
উবুন্টু 18.10, ffpmeg 4.0.2-2, ইমেজম্যাগিক 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#14324292 এবং 256 1024x1024 পিএনজি চিত্র রয়েছে।
এবং এখানে অন্য পরীক্ষার ডেটা যা এখনই আপনি সরাসরি আপনার ব্রাউজারে তৈরি করতে পারেন! 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
বলে যে জিআইএফটিতে কেবলমাত্র 64৪ টি ফ্রেম রয়েছে।
এটি খেলতে এখনও 4 সেকেন্ড সময় নেয়, তাই বিলম্বগুলি জিনিসগুলি মেলাতে পরিবর্তিত হয়।
-vf scale=512:-1
: .চ্ছিক। প্রশস্ততা, স্কেল উচ্চতা আনুপাতিকভাবে সেট করুন, সাধারণত আকার হ্রাস করতে এবং স্থান বাঁচাতে।
ইমেজম্যাগিককে কাজ করতে, আমাকে প্রথমে তার ডিস্ক এবং মেমরির সীমাটি এখানে বর্ণিত /etc/ImageMagick-6/policy.xml
হিসাবে সংশোধন করতে হয়েছিল: https://superuser.com/questions/1178666/imagemagick-convert-quits- after-some-pages
আরো দেখুন:
ইমেজম্যাগিক বনাম এফএফএমপিগ বেঞ্চমার্ক
আমি আদেশগুলি তুলনা করেছি:
/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
ডিফল্টরূপে সেগুলি পৃথক করে গণনা করে তবে চিত্র -deconstruct
ব্যবহার না করা অবধি চিত্রম্যাগিক হয় না ।
আপনি মূলত এই বিকল্পটি প্রতিবার ইমেজম্যাগিকের সাথে ব্যবহার করতে চাইবেন।
আমরা এর সাথে পার্থক্যটি পর্যবেক্ষণ করতে পারি:
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
। এটিতে কেবল মাঝের ত্রিভুজটি রয়েছে।
আরও দেখুন: আমি কীভাবে ইমেজম্যাগিক ব্যবহার করে একটি অ্যানিমেটেড জিআইএফ ফাইলের আকার পরিবর্তন করতে পারি?
-delay
: মান যা 60FPS এর সাথে মেলে ffmpeg
। রূপান্তর পারফরম্যান্সের জন্য গুরুত্বপূর্ণ নয়, তবে আমি এটি ঝুঁকি নিতে চাই না।
আউটপুট জিআইএফ-এর প্রায় একই আকার থাকে এবং দেখতে চাক্ষুষভাবে অভিন্ন হয়।
আমরা ইমেজম্যাগিকের জন্য পেয়েছি:
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
যা থেকে আমরা দেখতে পাচ্ছি:
পরীক্ষার হার্ডওয়্যার: লেনোভো থিংকপ্যাড পি 51 ল্যাপটপ , ইন্টেল কোর আই 7-7820HQ, 32 জিবি (16 + 16) ডিডিআর 4 2400 মেগাহার্টজ সোডিম, 512 জিবি এসএসডি পিসিআই টিএলসি ওপাল 2।
-r
ও -v
আদেশ ব্যবহার করি নি , এখনও আউটপুট জিআইএফ মূল পিএনজি ফাইলগুলির তুলনায় অনেক কম মানের। প্রদত্ত পিএনজি ফাইলের মতো জিআইএফ একই মানের কীভাবে রাখবেন?
-framerate 60 -r 60
। জেনারেটেড জিআইএফ এবং ইনপুট চিত্রগুলি ইমেজম্যাগিক সরঞ্জামগুলির 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
* উল্লেখ্য উপরের উদাহরণটি সরাসরি চিত্র ম্যাজিক উদাহরণ থেকে from
convert -delay 20 -loop 0 *.png out.gif
একটি লুপিং জিআইএফ তৈরি করে।