আমি কীভাবে চিত্রম্যাগিক ব্যবহার করে একটি অ্যানিমেটেড জিআইএফ ফাইলের আকার পরিবর্তন করতে পারি?


46

আমি যেমন একটি অ্যানিমেটেড জিআইএফ ফাইল do.gif আকার পরিবর্তন করতে চান এখানে চিত্র বর্ণনা লিখুন

যদি আমি এটি convert do.gif -resize 24x24\! do-24.gifকরি তবে এটি do-24.gif এ পুনরায় আকার দিন তবে অ্যানিমেটেড নয়এখানে চিত্র বর্ণনা লিখুন

একই অ্যানিমেশনটি পাওয়ার জন্য এটি কীভাবে পুনরায় আকার দিন?

উত্তর:


56

প্রথম রান:

convert do.gif -coalesce temporary.gif

তারপর

convert -size <original size> temporary.gif -resize 24x24 smaller.gif

2
-coalesce"একটি সম্পূর্ণ বদলে একটি অ্যানিমেশন ক্রম প্রতিটি বিন্দুতে অ্যানিমেশন দৃশ্য, একটি সত্য চলচ্চিত্র ফালা মত একটি বিট, সৃষ্টি করে। এই ধরনের একটা ক্রম, যেমন একটি পরিচিত Coalesced অ্যানিমেশন অনেক অধ্যয়ন, সম্পাদনা, পরিবর্তন এবং পুনরায় নিখুত সহজ।"
সাম

28
gifsicle --resize 24x24 > do-24.gifখুব করতে পারেন
স্যাম

2
নোট করুন যে কোলেসড ভিউটি অপটিমাইজডের চেয়ে অনেক বড় (আমার পরীক্ষায় ৩.২ বার), এবং পুনরায় আকারটি একটি সমন্বিত চিত্র তৈরি করে, যা ফাইল আকারের (আমার পরীক্ষায় ২.৩ বার) মূলের চেয়েও বড় হতে পারে আরও ছোট আমি যখন সরাসরি আকার পরিবর্তন করার চেষ্টা করি তখন এটি দেখতে দুর্দান্ত হয় এবং একটি ছোট ফাইল আকার থাকে, যদিও এটি কেবল এই চিত্রটির জন্য কাজ করে।
এন্ডোলিথ

1
জিফসিকল আমার ব্যবহারের ক্ষেত্রে আরও উন্নত, অনুকূলিত আউটপুট তৈরি করেছে। ধন্যবাদ @ স্যাম!
sj26

4
অস্থায়ী রুপান্তরিত করুন 24x24 স্মার্টলিআরআইজিআইফ আমার জন্য কাজ করে।, ইনপুট আকার নির্দিষ্ট না করে।
এএমবি

3

-coalesce + + -deconstruct

এর পরে -coalesce, আপনি সম্ভবত একটি যুক্ত করতে চান -deconstruct:

convert in.gif -coalesce -resize 256x -deconstruct out-deconstruct.gif

সমস্যার মূল কারণটি হ'ল আপনার ইনপুট জিআইএফ সঠিকভাবে হ্রাস করা হয়েছিল: জিআইএফ পরবর্তী ফ্রেমটিকে একটি অফসেটে পূর্ববর্তী ফ্রেম থেকে কেবল পরিবর্তিত আয়তক্ষেত্র হতে দেয়।

-coalesceতারপরে সমস্ত ফ্রেমগুলি মূল আকারে প্রসারিত করে যা আকার পরিবর্তন করে, তবে এটি আপনার ইনপুট চিত্র হিসাবে ফ্রেমগুলিকে পুনরায় সংকুচিত করে না: এটির -deconstructজন্য প্রয়োজনীয়!

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

$ identify out-convert.gif | head -n 3
out-convert.gif[0] GIF 1024x1024 1024x1024+0+0 8-bit sRGB 256c 16.7865MiB 0.020u 0:00.019
out-convert.gif[1] GIF 516x516 1024x1024+252+257 8-bit sRGB 256c 16.7865MiB 0.030u 0:00.019
out-convert.gif[2] GIF 515x520 1024x1024+248+257 8-bit sRGB 256c 16.7865MiB 0.030u 0:00.019

$ convert out-convert.gif -resize 256x out.gif
$ identify out.gif | head -n 3
out.gif[0] GIF 256x256 256x256+0+0 8-bit sRGB 256c 5.0479MiB 0.000u 0:00.009
out.gif[1] GIF 256x256 256x256+125+128 8-bit sRGB 256c 5.0479MiB 0.000u 0:00.009
out.gif[2] GIF 256x258 256x256+123+128 8-bit sRGB 256c 5.0479MiB 0.000u 0:00.009

$ convert out-convert.gif -coalesce -resize 256x out-coalesce.gif
$ identify out-coalesce.gif | head -n 3
out-coalesce.gif[0] GIF 256x256 256x256+0+0 8-bit sRGB 256c 1.97683MiB 0.010u 0:00.009
out-coalesce.gif[1] GIF 256x256 256x256+0+0 8-bit sRGB 256c 1.97683MiB 0.010u 0:00.009
out-coalesce.gif[2] GIF 256x256 256x256+0+0 8-bit sRGB 256c 1.97683MiB 0.010u 0:00.009

$ convert out-convert.gif -coalesce -resize 256x -deconstruct out-deconstruct.gif
$ identify out-deconstruct.gif | head -n 3
out-deconstruct.gif[0] GIF 256x256 256x256+0+0 8-bit sRGB 256c 1.87942MiB 0.010u 0:00.010
out-deconstruct.gif[1] GIF 135x135 256x256+60+61 8-bit sRGB 256c 1.87942MiB 0.010u 0:00.010
out-deconstruct.gif[2] GIF 135x136 256x256+59+61 8-bit sRGB 256c 1.87942MiB 0.010u 0:00.010

out.gif

এখানে চিত্র বর্ণনা লিখুন

আউট-coalesce.gif

এখানে চিত্র বর্ণনা লিখুন

আউট-deconstruct.gif

এখানে চিত্র বর্ণনা লিখুন

প্রথমত, আমরা কেমন ইনপুট ফাইল করা, out-convert.gif, আসলে সংকুচিত ছিল ফ্রেম 2 শুধুমাত্র যেহেতু 516x516অফসেটে 252+257, পূর্ণ আকারের ফ্রেম 1 থাকাকালীন 1024x1024

তারপরে, আমরা যদি তিনটি রূপান্তর তুলনা করি:

  • out.gif: সমস্ত ফ্রেমগুলি 256x256বড় বা বড় এবং প্রায় 5MiB এ বিশাল, কেন?

    দৃশ্যত ভুল, যেহেতু প্রায় আনুমানিক 256x256ফ্রেমগুলিতে একটি শূন্য-অফসেট থাকে, যেমন 125+128ফ্রেম 2!

  • out-coalesce.gif: সমস্ত ফ্রেম হয় 256x256এবং সঠিক অফসেট থাকে 0+0

    আউটপুট দৃশ্যত সঠিক দেখায় তবে আউটপুট ফাইলের আকার 2.0 মাইবি, যা এর চেয়ে বড় is out-deconstruct.gif

  • out-deconstruct.gif: সঙ্কুচিত ফ্রেম, চূড়ান্ত আউটপুট আকার 1.9 মাইবি।

    এর চেয়ে যথেষ্ট ছোট নয় out-coalesce.gif, তবে আমি মনে করি এটি কেবল কারণ কৃষ্ণভূমি সত্যিই খুব ভালভাবে সংকোচিত হয়, এবং এটি সাধারণভাবে খুব তাৎপর্যপূর্ণ হতে পারে।

ffmpeg এবং gifsicle

আমি নিম্নলিখিত কমান্ডগুলি চেষ্টা করেছিলাম:

ffmpeg -i out-convert.gif -vf scale=256:-1 out-ffmpeg-small.gif
gifsicle --resize 256x256 out-convert.gif > out-gifsicle.gif

এবং উভয়ই আরও ছোট সঠিকভাবে 1.5 মাইবি আউটপুট তৈরি করেছে।

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

টোডো: তারা কেন এটির চেয়ে ছোট তৈরি করতে পারে convert? তারা কি আরও ভাল ন্যূনতম বিচ্ছিন্ন আয়তক্ষেত্রগুলি বা অন্য কিছু নির্বাচন করছে?

উবুন্টু 18.10, ffpmeg 4.0.2-2, ইমেজম্যাগিক 6.9.10-8 এ পরীক্ষিত।


3

আমি এর সাথে পরিচিত হওয়ার সাথে সাথে আমি চিত্রগ্রাহক সমাধানের সন্ধান করছিলাম, তবে শেষ পর্যন্ত আমি @ স্যামের পরামর্শ নিয়ে গেলাম gifsicle। এটি আমি যা চেয়েছিলাম ঠিক তা করেছে, কোনও ঝামেলা নেই।

ফলস্বরূপ ফাইল আকারটি অনেক উপায়ে অপ্টিমাইজ করতে পারে, তবে আমি কেবল আকার হ্রাস এবং রঙের সংখ্যা হ্রাস করে চলেছি। কবজির মতো কাজ করেছেন:

gifsicle --resize 48x48 --colors 16 original.gif > smaller.gif
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.