- Untuk membuat kecepatan GIF animasi secepat mungkin,
Frame Delay harus diatur ke 20ms, bukan 10ms. Mengapa begitu?
- Animasi mulai didukung sejak GIF 89a
- Delay dapat diatur untuk tiap frame
- Waktu tunggu sebelum berpindah ke frame berikutnya dinyatakan dalam satuan 1/100 detik (10ms)
- Dapat diatur dari 0 hingga
0xffff (delay sekitar 10 menit)
- Apa yang terjadi jika diatur ke 0? Spesifikasi tidak memberi jawaban yang persis, tetapi menyebutkan dua hal
- Saat decoding GIF, tiap frame harus diproses tanpa delay
- Nilai delay hanya digunakan ketika bukan 0
- Artinya, jika diatur ke 0 maka frame tersebut harus diperlakukan sebagai "digabung dengan frame sebelumnya dan diproses sebagai gambar statis"
- Dengan begitu, ukuran bisa diperkecil dengan memasukkan frame yang hanya menyimpan bagian yang bergerak
- Masalahnya, tidak ada yang mendukung delay 0
→ Sebagian besar program yang mendukung GIF memaksa nilai 2 (20ms) ke bawah menjadi nilai yang lebih besar
- QT menyesuaikan dengan IE/FF:
(delay < 2 ? 10: delay) * 10
- Chrome menyesuaikan dengan FF: untuk mencegah iklan berkedip menggunakan 0, nilai
10ms ke bawah diperlakukan sebagai 100ms
- FF menyesuaikan dengan IE dan Opera: jika
0~10, disesuaikan menjadi 100ms
- IE 5 menyesuaikan dengan Netscape yang lambat: jika
50 ke bawah maka dipatok ke 100
- Kesamaan dari kode-kode di atas adalah bahwa
0~1 tidak disesuaikan ke 2, melainkan ke 10 (100ms)
- Artinya,
10 sama dengan 100, dan 20 adalah yang paling cepat
Kesimpulan
- Tidak ada yang merender sesuai spesifikasi GIF, padahal menurut saya seharusnya begitu
- Saat ini, untuk mendapatkan GIF tercepat, gunakan
2 (20ms) alih-alih 1 (10ms)
- Jika semua orang mengimplementasikan spesifikasi GIF dengan benar
- GIF dengan delay
10ms bisa didukung
- Satu frame tunggal animasi GIF bisa mendukung lebih dari 256 warna
- Kebingungan bahwa memberi delay kecil justru membuatnya lebih lambat bisa dihilangkan
- Kita bisa membuat GIF yang hanya berisi area yang diperbarui per frame untuk meningkatkan rasio kompresi
Belum ada komentar.