Mengapa GIF bisa begitu berat
GIF berasal dari tahun 1987 dan dirancang untuk grafik kecil di koneksi lambat, bukan untuk video. Format ini menyimpan setiap frame sebagai gambar terpisah yang dikompresi dengan LZW, metode lossless yang bekerja baik pada area warna rata dan buruk pada apa pun yang ber-noise, seperti rekaman kamera, gradien, atau grain film. Tidak ada kompensasi gerak seperti pada codec video modern, sehingga klip tiga detik pada 25 frame per detik berarti 75 gambar yang hampir utuh, dikemas satu demi satu.
Setiap frame juga dibatasi 256 warna. Saat GIF dibuat dari video, encoder sering menebarkan noise dithering di setiap frame untuk memalsukan gradasi warna yang hilang, dan noise itulah yang paling buruk dikompresi oleh LZW. Itulah sebabnya GIF reaksi berukuran 15 MB yang sudah sangat familiar itu bisa jadi hanya 600 KB jika berupa MP4.
Ukuran file bergantung pada jumlah frame, jumlah piksel per frame, dan detail warna. Alat ini mengurangi ketiganya.
Apa yang sebenarnya dilakukan ketiga level
Alat ini menjalankan FFmpeg yang dikompilasi ke WebAssembly di dalam browser Anda dan membangun ulang GIF dalam dua tahap. Tahap pertama menganalisis seluruh animasi dan membuat satu palet yang dioptimalkan untuknya; tahap kedua merender ulang setiap frame menggunakan palet tersebut. Frame diskalakan dengan filter Lanczos, yang menjaga tepi tetap lebih tajam dibanding resampling sederhana, dan warna dipetakan dengan ordered (Bayer) dithering, yang menghasilkan pola teratur yang jauh lebih mudah dikompresi daripada noise acak.
- Ringan — 15 frame per detik, dimensi asli, hingga 256 warna. Paling cocok jika GIF harus tetap pada ukurannya saat ini, misalnya demo UI yang harus terbaca hingga ke level piksel.
- Sedang — 12 frame per detik, lebar dan tinggi dikurangi menjadi 75%, hingga 128 warna. Ini pengaturan default, dan keseimbangan yang baik untuk sebagian besar GIF di situs web, dokumentasi, dan obrolan.
- Kuat — 10 frame per detik, setengah lebar dan tinggi, hingga 64 warna. Gunakan saat Anda harus memenuhi batas yang ketat, seperti lampiran email atau batas unggahan di forum.
Memperkecil dimensi menjadi setengah saja sudah menghilangkan tiga perempat piksel, itulah sebabnya Kuat bisa mengubah file 12 MB menjadi kurang dari 2 MB. Waktu animasi tetap dipertahankan: loop tiga detik tetap berdurasi tiga detik, hanya digambar dengan lebih sedikit frame.
Memilih level sesuai konten
Jenis animasi lebih menentukan daripada ukuran file awal Anda.
- Rekaman layar dan panduan UI memiliki area datar yang luas dan teks tajam. Konten seperti ini tahan terhadap pengurangan warna, tetapi terganggu oleh penskalaan ke bawah karena teks kecil menjadi tidak terbaca. Coba Ringan terlebih dahulu; jika masih terlalu besar, potong rekaman ke area yang relevan sebelum mengompres.
- Ilustrasi, logo, dan stiker dengan sedikit warna datar terlihat hampir identik pada 64 warna. Kuat biasanya berhasil, kecuali gambarnya memang sudah kecil.
- Klip dari video atau rekaman kamera memiliki gradien, warna kulit, dan langit. Pada 64 warna akan muncul banding, jadi Sedang adalah pilihan yang lebih aman. Jika Sedang pun masih terlalu besar, kemungkinan klipnya terlalu panjang untuk format GIF.
- Pixel art sebaiknya tidak diskalakan sama sekali. Gunakan Ringan, yang mempertahankan dimensi asli.
Jika Anda membuat GIF dari video, biasanya lebih baik mengendalikan ukuran sejak tahap pembuatan dengan Konversi video ke GIF dan menjaga klip tetap pendek, lalu mengompres hasilnya jika diperlukan.
Jika hasilnya tidak sesuai harapan
- Ukuran file hampir tidak berkurang. Sumbernya kemungkinan sudah dioptimalkan, misalnya berukuran kecil, frame rate rendah, atau sudah dibatasi ke sedikit warna. GIF yang berjalan pada 8–10 fps hanya mendapat sedikit manfaat dari pengurangan frame rate. Naikkan satu level.
- Banding terlihat pada gradien. Itu akibat palet 128 atau 64 warna. Turunkan ke level yang lebih ringan.
- Muncul tekstur seperti kisi-kisi. Ini adalah pola ordered dither. Paling terlihat pada gradien halus di level Kuat; Ringan atau Sedang menguranginya.
- Warna aneh di satu adegan. Karena satu palet digunakan bersama oleh seluruh animasi, adegan pendek dengan warna yang tidak biasa (kilatan merah di klip yang dominan biru) mendapat lebih sedikit slot palet.
Batasan dan privasi
File hingga 100 MB diterima, dan Anda bisa menjatuhkan beberapa GIF sekaligus. File diproses satu per satu dengan level yang dipilih saat itu, dan setiap hasil menampilkan ukurannya sebelum dan sesudah kompresi. Unduh satu per satu atau sekaligus dalam satu ZIP.
Tidak ada yang diunggah. Mesin FFmpeg diunduh sekali, lalu berjalan secara lokal, sehingga kecepatan pemrosesan bergantung pada perangkat Anda. GIF 20 MB biasanya memerlukan waktu beberapa detik hingga satu menit; ponsel lebih lambat daripada laptop, dan animasi yang sangat panjang bisa kehabisan memori di perangkat lama.