কীভাবে পিএনজি স্ট্রিপকে একটি জিআইএফ রূপান্তর করবেন?


12

সুতরাং, আমি একটি প্রোগ্রামে এই অ্যানিমেশনটি তৈরি করেছি, তবে এটি পিএনজি সিকোয়েন্স হিসাবে রফতানি সমর্থন করে বলে মনে হচ্ছে না যাতে আমি এটিকে জিআইএফতে রূপান্তর করতে পারি। অ্যানিমেশনটি 100 ফ্রেমেরও বেশি হয়ে গেছে সুতরাং প্রতিটি চিত্র একের পর এক সংরক্ষণ করতে বয়স হতে হবে। তবে এটি একটি "ফালা" হিসাবে রফতানি সমর্থন করে, যা চলচ্চিত্রের চলচ্চিত্রের মতো। অ্যানিমেশনের প্রতিটি ছবিতে একই মাত্রা রয়েছে। প্রোগ্রামটির "স্ট্রিপ" বৈশিষ্ট্যটি কীভাবে কাজ করে তা এখানে।

অ্যানিমেশনের চিত্রগুলি অনুভূমিকভাবে স্ট্যাক করা হয়, প্রথম ফ্রেমটি অনেকটা বামদিকে থাকে এবং শেষ ফ্রেমটি ডানদিকে থাকে। ফ্রেমের মধ্যে কোনও ফাঁক নেই এবং অ্যানিমেশনটিতে এক্স ফ্রেম থাকলে ফাইলের নামটি সাধারণত "name_stripX.png" হয়। যদি প্রতিটি ফ্রেম 32 বাই 32 হয় এবং অ্যানিমেশনটিতে 8 টি ফ্রেম থাকে তবে এই ফাইলটির 256 প্রস্থ এবং 32 এর উচ্চতা থাকবে।

এখানে কয়েকটি উদাহরণ আউটপুট দেওয়া হয়েছে, প্রতিটি রঙ এক ফ্রেমে পূরণ করে:

উদাহরণ আউটপুট

এছাড়াও, কিছুটা আরও পরিষ্কার করতে, প্রোগ্রামটিকে "গেম মেকার 8.0" বলা হয়।

উত্তর:


16

আপনি বিভিন্ন উপায়ে চিত্র রূপান্তর করতে ইমেজম্যাগিক ব্যবহার করতে পারেন এবং এটি খুব সহজেই এটি সক্ষম হওয়া উচিত। প্রথমে আপনি অংশগুলিতে বিভক্ত হয়ে উঠতে পারেন ( original.pngউত্সের চিত্র হিসাবে এবং এই ক্ষেত্রে আকারে 32x32 পিক্সেল):

convert original.png -crop 32x32 parts-%02d.png

তারপরে আপনি এটিকে অ্যানিমেশনে রূপান্তর করতে -loop 1পারেন ( যদি আপনি এটি লুপ করতে না চান তবে ব্যবহার করুন ):

convert -loop 0 -page +0+0 ./parts*.png output.gif

ফলাফল এতে:

প্রথম কমান্ডের আউটপুট পিএনজিগুলিতে একটি অফসেট অন্তর্ভুক্ত থাকে, সুতরাং -page +0+0বিকল্পটি ছাড়াই অ্যানিমেশনটি শেষ হয়:

আপনি অন্তর্ভুক্ত করতে পারেন এমন অন্যান্য বিকল্প রয়েছে (মূলত দ্বিতীয় কমান্ডে), -delayইত্যাদি ইত্যাদি - আপনি অ্যানিমেশনটিও অনুকূল করতে পারেন যাতে এটি ছোট (এবং লোড / রেন্ডারে দ্রুততর) - যেমন এখান থেকে ধার করা :

convert output.gif -fuzz 10% -layers Optimize optimised.gif

বা জিফসিকল ব্যবহার করে

gifsicle -O output.gif -o optimised.gif

সম্পাদনা: যদি ফ্রেমগুলি স্বচ্ছ হয়, আপনি
-dispose Backgroundবিকল্প যুক্ত করে ফ্রেমগুলি প্রতিস্থাপন করতে পারেন , সুতরাং যখন পরেরটি লোড করা হয় তখন কোনও ফ্রেম নিষ্পত্তি করা হয়:


উপরের উদাহরণটি pageবিকল্প ছাড়াই সম্পন্ন হয়েছে যাতে এটি স্পষ্টভাবে দেখায়

এটির সাথে সমস্যা হ'ল আপনি সম্ভবত ফলশ্রুতিযুক্ত চিত্রটি আরও বেশি অনুকূলিত করতে পারবেন না - সুতরাং অন্য উপায়টি ফ্রেমগুলিকে অস্বচ্ছ করতে হবে যাতে পরবর্তী ফ্রেমটি পূর্ববর্তীটি coversেকে দেয়।


চিত্রটির স্বচ্ছতা রয়েছে এবং মূলত এটি পূর্ববর্তী ফ্রেমের উপরের চিত্রটি আঁকছে, আমি কি এটির কোনও উপায় রাখতে পারি যাতে এটি পরবর্তী ফ্রেমটি ফাঁকা রেখে দেয়?
user245115

উত্স চিত্র থেকে স্বচ্ছতা সরান সহজতম পদ্ধতি। তবে এটি আরও পরামিতি দিয়ে করা যেতে পারে।
ডেভিড 6

@ ব্যবহারকারী245115 - ওভারলেলিংয়ের পরিবর্তে ফ্রেমগুলি প্রতিস্থাপন করুন - সম্পাদনা দেখুন।
উইলফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.