- Animasyonlu GIF hızını mümkün olan en yükseğe çıkarmak için
Frame Delay değerini 10ms değil 20ms olarak ayarlamak gerekiyor. Neden?
- GIF 89a ile birlikte animasyon desteği gelmeye başladı
- Her kare için gecikme ayarlanabiliyor
- Sonraki kareye geçmeden önce beklenecek süre saniyenin yüzde biri (
10ms) biriminde ifade ediliyor
0 ~ 0xffff (yaklaşık 10 dakikalık gecikme) aralığında ayarlanabiliyor
- Peki
0 ayarlanırsa ne olur? Spesifikasyonda buna net bir cevap yok, ama iki şey belirtiliyor
- GIF decode edilirken her kare gecikme olmadan işlenmeli
- Gecikme değeri yalnızca
0 olmadığında kullanılmalı
- Yani
0 olarak ayarlanırsa, "önceki kareyle birleştirilip statik görüntü olarak işlenmesi" gerekir
- Böylece yalnızca hareket eden bölümleri kaydeden kareler eklenerek boyut küçültülebilir
- Sorun şu ki kimse
0 gecikmeyi desteklemiyor
→ GIF destekleyen çoğu program 2(20ms) altındaki değerleri daha yüksek bir değere sabitliyor
- QT, IE/FF ile uyumlu:
(delay < 2 ? 10: delay) * 10
- Chrome, FF ile uyumlu: yanıp sönen reklamların
0 kullanmasını engellemek için 10ms ve altı değerleri 100ms yapıyor
- FF, IE ve Opera ile uyumlu:
0~10 aralığını 100ms olarak ayarlıyor
- IE 5, Netscape yavaş olduğu için ona uyum sağlıyor:
50 ve altı durumlarda 100e sabitliyor
- Bu kodların ortak noktası,
0~1 değerlerini 2ye değil 10(100ms) değerine çekmeleri
- Yani
10, 100 ile aynı; en hızlı değer ise 20
Sonuç
- Kimse GIF spesifikasyonuna göre render etmiyor, ama bence öyle yapılmalı
- Şu anda en hızlı GIF'i elde etmek için
1(10ms) yerine 2(20ms) kullanın
- Herkes GIF spesifikasyonunu doğru şekilde uygularsa
10ms gecikmeli GIF'ler desteklenebilir
- GIF animasyonunun tek bir karesinde
256dan fazla renk desteklenebilir
- Küçük gecikme değeri verince daha yavaş olma karmaşası ortadan kalkar
- Kare başına yalnızca güncellenen alanı içeren GIF'ler oluşturularak sıkıştırma oranı iyileştirilebilir
Henüz yorum yok.