.Gif ফাইলটি স্বয়ংক্রিয়ভাবে সংকুচিত করার কোনও উপায়?


11

আমার কাছে একটি 2.0 এমবি জিআইএফ আছে যা আমি আরও ছোট করতে চাই, কিছু ফ্রেম বাদ দিয়ে।

কোনও কমান্ড লাইন ইউটিলিটি বা কোনও প্রোগ্রাম রয়েছে যা এটি স্বয়ংক্রিয়ভাবে আমার জন্য করবে?

ধন্যবাদ।


আপনি ওয়েবম ফর্ম্যাটটি দেখতে চাইতে পারেন: এটি আরও অনুকূলিত GIF এর মতো!

উত্তর:


8

ইমেজঅપ્ টিম তার জিফ সংকোচনের জন্য জিফসিকল ব্যবহার করে। যতদূর আমি জানি, এটি বেশ ভালভাবে কাজ করে (আমি সাধারণত জিআইএফ এই দিনগুলিতে ব্যবহার করি না)। তাদের সাইট থেকে:

আপনার অ্যানিমেশন অনুকূলিতকরণ! এটি প্রতিটি ফ্রেমের কেবল পরিবর্তিত অংশ সঞ্চয় করে এবং আপনার জিআইএফগুলি মূলত সঙ্কুচিত করতে পারে। এগুলি আরও ছোট করতে আপনি স্বচ্ছতাও ব্যবহার করতে পারেন। জিফসিকেলের অপটিমাইজারটি বেশ শক্তিশালী এবং সাধারণত অল্প অল্প বাইটের মধ্যে সেরা বাণিজ্যিক অপ্টিমাইজারের মধ্যে অ্যানিমেশনগুলি হ্রাস করে।


6

আপনি জিআইএমজিম্প ইনস্টল করুন থেকে কিছু ফ্রেম সরিয়ে ফেলার জন্য গিম্পটি ব্যবহার করতে পারেন এবং ফাইলটিকে আবার কোনও জিআইএফ-এ সংরক্ষণ করে পুনরায় অনুকূল করতে পারেন।


গিম্পে সঞ্চয় করার সময় আপনি কীভাবে ফাইলটিকে পুনরায় অনুকূল করতে পারেন?
orschiro

2

আমি 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 মিমি ফ্রেমের বিলম্ব ব্যবহার করতে।


1

আপনি জিম্পে আপনার .gif ফাইলটিকে সহজেই অনুকূলিত করতে পারেন।

কেবল .gif হিসাবে সংরক্ষণ করুন এবং তারপরে সংক্ষেপণ করুন বা আপনি .jpeg বা অন্যান্য হিসাবে অন্যান্য এক্সটেনশনে সংরক্ষণ করতে পারেন।


1
গিম্পে আপনি কীভাবে সংকোচন করবেন?
orschiro
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.