আমি কীভাবে স্থির চিত্রগুলি থেকে একটি অ্যানিমেটেড জিআইএফ তৈরি করতে পারি (পছন্দমত কমান্ড লাইনের সাথে)?


78

আমি .gifপ্রদত্ত .jpgছবির সেট থেকে একটি অ্যানিমেটেড ছবি তৈরি করতে চাই ।

আমি কমান্ড লাইন থেকে এটি করতে পছন্দ করব, সুতরাং কমান্ড লাইন সরঞ্জামগুলি খুব স্বাগত জানায়।


উত্তর:


87

আপনি ইমেজম্যাগিক প্যাকেজটি ব্যবহার করতে পারেন । কমান্ডটি ব্যবহার করে এটি ইনস্টল করুন:

sudo apt-get install imagemagick

এখন আপনি ব্যবহার করে একটি gifসংখ্যা ( jpg) ব্যবহার করে তৈরি করতে পারেন :

convert -delay 20 -loop 0 *.jpg myimage.gif

6
দয়া করে এখানে আপনি অন্তর্ভুক্ত করুন কীভাবে আপনি জিআইএফ অ্যানিমেশন ইত্যাদি 50% দ্বারা আকার পরিবর্তন করতে পারেন। ইত্যাদি -resize 50%
লিও লোপোল্ড হার্টজ 준영

উবুন্টু 18.10 এই চিত্রগুলির জন্য "ক্যাশে রিসোর্স অবসান" দিয়ে ব্যর্থ হয়েছে: github.com/cirosantilli/media/blob/master/… সম্পর্কিত: superuser.com/questions/1178666/…
Ciro

করে ImageMagick ব্যবহারকারীদের সম্ভবত এছাড়াও চান: -deconstruct। আমি এটিও পেয়েছি যে ইমেজম্যাগিক
Ciro

convert -delay 0 -loop 0 *.tif myanimated.gif720 টিফ ফাইলগুলিতে খুব সুন্দরভাবে কাজ করেছেন
রন করুন

46

@ মাইথাক্স উত্তরটি সম্পূর্ণ করতে:

খুব বড় ফাইল তৈরি করা এড়াতে আপনি -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 যত্ন নিন

*.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

ম্যাক ওএস এক্সে সংখ্যাগতভাবে বাছাই করা বেশ জটিল, যদিও আমি মনে করি আপনাকে একটি কাস্টম স্ক্রিপ্ট তৈরি করতে হবে।


4
জিরো সহ ফরোয়ার্ড প্যাডিং সংখ্যাগুলি দ্বারা আপনি আপনার * .jpg সমস্যাটি এড়াতে পারবেন। "01.jpg" এর পরিবর্তে "1.jpg", এবং আরও কিছু। আপনি ট্রিপল সংখ্যা, তারপর "001.jpg", "010.jpg", ইত্যাদি পেলে
bigreddmachine

2
ফাইলের নাম সিকোয়েন্স সমস্যাটি প্রায় বেশ কয়েকটি উপায় রয়েছে। সহ find, sortব্রেস প্রসারিত ইত্যাদি on lsটুল জিনিস এই ধরনের কুখ্যাতিপূর্ণভাবে অনুপযুক্ত হয়। ব্যবহার find। কিছুটা শেখার বক্ররেখা রয়েছে তবে এটি মূল্যবান।
ভয়েসেস

কিছু ব্যবহারকারী ম্যাসেরেনের সাথে ফাইলের নামগুলি সম্পাদনা করতে আগ্রহী হতে পারে: github.com/laurent22/massren
গ্রাহাম পি হিথ

এটি শেষ করতে যুগে যুগে সময় লাগে। একটি ভার্বোস বিকল্প আছে?
ওউরনোস

21

আমার মন্তব্য করার মতো খ্যাতি নেই তবে ফাইলের নাম পরিবর্তন করার পরিবর্তে আপনি নিজের শেলটি ফাইলের নাম প্রসারিত করতে গ্লোববিং ব্যবহার করতে পারেন

convert -resize 50% -delay 10 -loop 0 image_{0..99}.jpg output.gif

11

গিম্পের

আপনি জিআইএমপি দিয়ে সহজেই এটি করতে পারেন। এটি ইতিমধ্যে ইনস্টল না থাকলে প্রথমে এটি ইনস্টল করুন

sudo apt-get install gimp

জিআইএফ তৈরি করা হচ্ছে

জিআইএমপি থেকে ফাইল -> সমস্ত png এর নিজস্ব স্তরে খোলার জন্য স্তর হিসাবে খুলুন

স্তর হিসাবে খুলুন

এখান থেকে আপনি স্তরগুলিতে সম্পাদনা সম্পাদন করতে পারেন এবং একবার হয়ে গেলে, ফাইল -> হিসাবে রফতানিতে যান । কথোপকথন থেকে ফাইলের ধরণটি জিআইএফ-তে সেট করতে ভুলবেন না।

জিআইএফ-তে ফাইলের ধরন সেট করুন

সেখান থেকে আপনি জিআইএফ রফতানি বিকল্পগুলিতে যাবেন। ' অ্যানিমেশন হিসাবে ' বিকল্পটি টিক দিন এবং প্রয়োজনীয় হিসাবে প্যারামিটার সেট করুন।

জিআইএফ রফতানি বিকল্পগুলি


7

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

যা থেকে আমরা দেখতে পাচ্ছি:

  • ইমেজম্যাগিক ২.6 গিগাবাইট র‌্যাম ব্যবহার করেছে এবং প্রায় 1 মিনিট সময় নেয়
  • ffmpeg 100Mb র‌্যাম ব্যবহার করেছে এবং 4 সেকেন্ড সময় নিয়েছিল

পরীক্ষার হার্ডওয়্যার: লেনোভো থিংকপ্যাড পি 51 ল্যাপটপ , ইন্টেল কোর আই 7-7820HQ, 32 জিবি (16 + 16) ডিডিআর 4 2400 মেগাহার্টজ সোডিম, 512 জিবি এসএসডি পিসিআই টিএলসি ওপাল 2।


উত্সাহিত এবং পছন্দ হয়েছে! দুর্দান্ত উত্তর, আমার কাছে একটি ছোট ফলোআপ প্রশ্ন আছে। আমার কাছে এত উচ্চমানের চিত্র নেই, এবং আমি ব্যবহার -r -vআদেশ ব্যবহার করি নি , এখনও আউটপুট জিআইএফ মূল পিএনজি ফাইলগুলির তুলনায় অনেক কম মানের। প্রদত্ত পিএনজি ফাইলের মতো জিআইএফ একই মানের কীভাবে রাখবেন?
astro123

হাই @ অ্যাস্ট্রো 123 কীভাবে গুণমান কম? ছোট চিত্রের আকার, বা কম ফ্রেম বা অন্য কিছু (জিআইএফ দৃশ্যত ক্ষতিকারক ব্যবহার করে, তাই আরও খারাপ সংক্ষেপণ হতে পারে না)? ব্যবহার করে দেখুন -framerate 60 -r 60। জেনারেটেড জিআইএফ এবং ইনপুট চিত্রগুলি ইমেজম্যাগিক সরঞ্জামগুলির identifyসাহায্যে পরীক্ষা করে দেখুন এবং কী চলছে তা নির্ধারণ করতে চান।
সিরো সান্তিলি 新疆 改造 中心 法轮功 六四 事件

4

আপনি চিত্রগ্রাহক প্যাকেজে অন্তর্ভুক্ত রূপান্তর নামে একটি প্রোগ্রাম ব্যবহার করতে পারেন। এটি কমান্ড লাইন চালিত, তবে ব্যবহার করা খুব সহজ। এটি সফ্টওয়্যার কেন্দ্রের মাধ্যমে ইনস্টল করুন, বা কমান্ড প্রম্পটে যান এবং টাইপ করুন

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


1
লুপিং জিআইএফ-এ আমি কীভাবে 40 পিএনজি চিত্র করব? সমস্ত ফোল্ডারে / হোম / ফিউশন 809 / নথি / চিত্রসমূহ
BH2017

1
@ BH2017: convert -delay 20 -loop 0 *.png out.gifএকটি লুপিং জিআইএফ তৈরি করে।
unutbu
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.