Anda mungkin ingin melihat ke dalam format webm: itu seperti gif yang lebih optimal!
Jawaban:
8
ImageOptim menggunakan Gifsicle untuk kompresi Gif-nya. Sejauh yang saya tahu, ini berfungsi dengan baik (saya biasanya tidak menggunakan Gif hari ini). Dari situs mereka:
Optimalkan animasi Anda! Ini hanya menyimpan bagian yang diubah dari setiap frame, dan secara radikal dapat menyusutkan GIF Anda. Anda juga dapat menggunakan transparansi untuk membuatnya lebih kecil. Pengoptimal Gifsicle cukup kuat, dan biasanya mengurangi animasi hingga beberapa byte dari pengoptimal komersial terbaik.
Bagaimana Anda mengoptimalkan kembali file pada penyimpanan di Gimp?
orschiro
2
Saya menggunakan ezgif.com/optimize , karena GIMP dan alat lain tidak bagus dalam pekerjaan ini. Perbedaannya adalah bahwa ezgif menggunakan gifsiclemodifikasi (dengan lossybendera), tidak tersedia pada aptversi. Lihat rilis 1.82.1 di sini (ganti /usr/bin/gifsicledengan yang sesuai untuk sistem Anda (biner diakhiri dengan -static).
Catatan saya tentang alur kerja optimasi gif lengkap ada di sini .
Sunting : skrip saat ini yang sedang digunakan akan diperbarui di GitHub di sini
Saya tidak akan menjelaskan bagaimana saya melakukan semuanya di sini, ide umumnya adalah beberapa fungsi bash / alias:
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"
}
The --lossybendera mengambil integer dari 30 sampai 200, jadi untuk kualitas terbaik:
gifsicle -O3 --lossy=30 -o output.gif input.gif
Dengan fungsi di atas, gifoptAnda dapat menyederhanakan masalah, karena defaultnya adalah 30
gifopt input.gif
... output akan dinamai secara otomatis input-opt.gif. Anda dapat mengubah fungsi untuk menggunakan --batchbendera untuk pengeditan di tempat tetapi saya tidak akan merekomendasikan untuk menimpa materi awal Anda.
Fungsi itu juga berfungsi untuk menghapus _reduced_xakhiran apa pun yang ditambahkan oleh fungsi pengurangan jumlah frame, yaitu Anda bisa memiliki file perantara input_reduced_x2.gif(langkah yang akan ~ membagi dua ukuran file dengan menjatuhkan setiap frame lainnya).
Jika Anda melakukannya, kecepatan mungkin berubah, diperbaiki dengan gifspeedchange input-opt.gif 5misalnya, untuk menggunakan penundaan bingkai 50 ms.
Jawaban:
ImageOptim menggunakan Gifsicle untuk kompresi Gif-nya. Sejauh yang saya tahu, ini berfungsi dengan baik (saya biasanya tidak menggunakan Gif hari ini). Dari situs mereka:
sumber
Anda dapat menggunakan Gimp untuk menghapus beberapa frame dari GIF serta mengoptimalkan kembali file dengan menyimpannya kembali ke GIF lagi.
sumber
Saya menggunakan ezgif.com/optimize , karena GIMP dan alat lain tidak bagus dalam pekerjaan ini. Perbedaannya adalah bahwa ezgif menggunakan
gifsicle
modifikasi (denganlossy
bendera), tidak tersedia padaapt
versi. Lihat rilis 1.82.1 di sini (ganti/usr/bin/gifsicle
dengan yang sesuai untuk sistem Anda (biner diakhiri dengan-static
).Catatan saya tentang alur kerja optimasi gif lengkap ada di sini .
Sunting : skrip saat ini yang sedang digunakan akan diperbarui di GitHub di sini
Saya tidak akan menjelaskan bagaimana saya melakukan semuanya di sini, ide umumnya adalah beberapa fungsi bash / alias:
The
--lossy
bendera mengambil integer dari 30 sampai 200, jadi untuk kualitas terbaik:Dengan fungsi di atas,
gifopt
Anda dapat menyederhanakan masalah, karena defaultnya adalah 30... output akan dinamai secara otomatis
input-opt.gif
. Anda dapat mengubah fungsi untuk menggunakan--batch
bendera untuk pengeditan di tempat tetapi saya tidak akan merekomendasikan untuk menimpa materi awal Anda.Fungsi itu juga berfungsi untuk menghapus
_reduced_x
akhiran apa pun yang ditambahkan oleh fungsi pengurangan jumlah frame, yaitu Anda bisa memiliki file perantarainput_reduced_x2.gif
(langkah yang akan ~ membagi dua ukuran file dengan menjatuhkan setiap frame lainnya).Jika Anda melakukannya, kecepatan mungkin berubah, diperbaiki dengan
gifspeedchange input-opt.gif 5
misalnya, untuk menggunakan penundaan bingkai 50 ms.sumber
Anda dapat mengoptimalkan file .gif Anda di Gimp dengan mudah.
Cukup Simpan sebagai .gif lalu kompres atau Anda dapat menyimpan di ekstensi lain sebagai .jpeg atau lainnya.
sumber