উত্তর:
ইমেজঅપ્ টিম তার জিফ সংকোচনের জন্য জিফসিকল ব্যবহার করে। যতদূর আমি জানি, এটি বেশ ভালভাবে কাজ করে (আমি সাধারণত জিআইএফ এই দিনগুলিতে ব্যবহার করি না)। তাদের সাইট থেকে:
আপনার অ্যানিমেশন অনুকূলিতকরণ! এটি প্রতিটি ফ্রেমের কেবল পরিবর্তিত অংশ সঞ্চয় করে এবং আপনার জিআইএফগুলি মূলত সঙ্কুচিত করতে পারে। এগুলি আরও ছোট করতে আপনি স্বচ্ছতাও ব্যবহার করতে পারেন। জিফসিকেলের অপটিমাইজারটি বেশ শক্তিশালী এবং সাধারণত অল্প অল্প বাইটের মধ্যে সেরা বাণিজ্যিক অপ্টিমাইজারের মধ্যে অ্যানিমেশনগুলি হ্রাস করে।
আপনি জিআইএম থেকে কিছু ফ্রেম সরিয়ে ফেলার জন্য গিম্পটি ব্যবহার করতে পারেন এবং ফাইলটিকে আবার কোনও জিআইএফ-এ সংরক্ষণ করে পুনরায় অনুকূল করতে পারেন।
আমি ezgif.com/optimize ব্যবহার করি , কারণ জিআইএমপি এবং অন্যান্য সরঞ্জাম এই কাজটিতে ভাল নয়। পার্থক্যটি হ'ল ইজজিফ একটি gifsicle
পরিবর্তন ব্যবহার করে ( lossy
পতাকা সহ) যা apt
সংস্করণে পাওয়া যায় না । এখানে রিলিজ দেখুন 1.82.1 ( /usr/bin/gifsicle
আপনার সিস্টেমের জন্য উপযুক্ত একের সাথে প্রতিস্থাপন করুন ( বাইনারিটি শেষ হবে -static
)।
পূর্ণ জিআইএফ অপ্টিমাইজেশন কর্মপ্রবাহে আমার নোটগুলি এখানে ।
সম্পাদনা করুন : ব্যবহৃত স্ক্রিপ্টটি ব্যবহৃত হিসাবে এখানে গিটহাবে আপডেট করা হবে
আমি এখানে এটি কীভাবে করব তা বর্ণনা করব না, সাধারণ ধারণাটি কয়েকটি বাশ ফাংশন / উপকরণ:
function gifopt() {
# args: $input_file ($loss_level)
if [ -z "$2" ]
then
# use default of 30
local loss_level=30
elif [[ "$2" =~ ^[0-9]+$ ]] && [ "$2" -ge 30 -a "$2" -le 200 ]
then
local loss_level=$2
else
echo "${2:-"Loss level parameter must be an integer from 30-200"}" 1>&2
exit 1
fi
local inputgif="${1?'Missing input file parameter'}"
local gifname="$(basename $inputgif .gif)"
local basegifname=$(echo "$gifname" | sed 's/_reduced_x[0-9]//g')
local outputgif="$basegifname-opt.gif"
gifsicle -O3 --lossy="$loss_level" -o "$outputgif" "$inputgif";
local oldfilesize=$(du -h $inputgif | cut -f1)
local newfilesize=$(du -h $outputgif | cut -f1)
echo "File reduced from $oldfilesize to $newfilesize as $outputgif"
}
function gifopt() {
# args: $input_file ($loss_level)
if [ -z "$2" ]
then
# use default of 30
loss_level=30
elif [[ "$2" =~ ^[0-9]+$ ]] && [ "$2" -ge 30 -a "$2" -le 200 ]
then
loss_level=$2
else
echo "${2:-"Loss level parameter must be an integer from 30-200"}" 1>&2
exit 1
fi
local inputgif="${1?'Missing input file parameter'}"
local gifname="$(basename $inputgif .gif)"
local basegifname=$(echo "$gifname" | sed 's/_reduced_x[0-9]//g')
local outputgif="$basegifname-opt.gif"
gifsicle -O3 --lossy="$loss_level" -o "$outputgif" "$inputgif";
local oldfilesize=$(du -h $inputgif | cut -f1)
local newfilesize=$(du -h $outputgif | cut -f1)
echo "File reduced from $oldfilesize to $newfilesize as $outputgif"
}
function gifspeedchange() {
# args: $gif_path $frame_delay (1 = 0.1s)
local orig_gif="${1?'Missing GIF filename parameter'}"
local frame_delay=${2?'Missing frame delay parameter'}
gifsicle --batch --delay $frame_delay $orig_gif
local newframerate=$(echo "$frame_delay*10" | bc)
echo "new GIF frame rate: $newframerate ms"
}
--lossy
পতাকা, যাতে শ্রেষ্ঠ মানের জন্য, 200 30 থেকে একটি পূর্ণসংখ্যা লাগে:
gifsicle -O3 --lossy=30 -o output.gif input.gif
উপরের ফাংশনটির সাহায্যে gifopt
আপনি বিষয়গুলি সহজ করতে পারবেন, যেহেতু এটি 30 এ ডিফল্ট হয়
gifopt input.gif
... আউটপুট স্বয়ংক্রিয়ভাবে নামকরণ করা হবে input-opt.gif
। আপনি --batch
জায়গাটিতে সম্পাদনা করার জন্য পতাকাটি ব্যবহার করতে ফাংশনটি পরিবর্তন করতে পারেন তবে আমি আপনার প্রারম্ভিক উপাদানটিকে ওভাররাইট করার পরামর্শ দিচ্ছি না।
এই ফাংশনটি _reduced_x
ফ্রেম গণনা হ্রাস ফাংশন দ্বারা যুক্ত যে কোনও প্রত্যয় মুছে ফেলতেও কাজ করে, যেমন আপনার একটি মধ্যবর্তী ফাইল থাকতে পারে input_reduced_x2.gif
(এমন পদক্ষেপ যা প্রতিটি অন্যান্য ফ্রেম ফেলে রেখে ফাইলের আকার অর্ধেক করে দেবে)।
যদি আপনি এটি করেন তবে গতি পরিবর্তিত হতে পারে, gifspeedchange input-opt.gif 5
উদাহরণস্বরূপ, এটি 50 মিমি ফ্রেমের বিলম্ব ব্যবহার করতে।
আপনি জিম্পে আপনার .gif ফাইলটিকে সহজেই অনুকূলিত করতে পারেন।
কেবল .gif হিসাবে সংরক্ষণ করুন এবং তারপরে সংক্ষেপণ করুন বা আপনি .jpeg বা অন্যান্য হিসাবে অন্যান্য এক্সটেনশনে সংরক্ষণ করতে পারেন।