JPG'den AVIF'e Geçmek Dosyayı Neden Küçültür?
4 dk okuma
Aynı görüntü, yarısı kadar veri
Bir fotoğrafı JPG olarak kaydettiniz, sonra aynı fotoğrafı AVIF olarak kaydettiniz. İkisi ekranda birbirinden ayırt edilemiyor ama AVIF dosyası belirgin biçimde küçük. Nasıl oluyor bu?
Cevap sihir değil, otuz yılı aşkın mühendislik birikimi. Bu yazıda AVIF'in verimliliğinin nereden geldiğini, hangi durumlarda bu verimliliğin belirginleştiğini ve karşılığında neyi feda ettiğinizi anlatıyoruz.
JPG'nin yaptığı iş
Önce JPG'yi hakkını vererek anlayalım, çünkü kendi döneminde olağanüstü bir başarıydı.
JPG, görüntüyü küçük ve sabit boyutlu karelere böler. Her karedeki piksel verisini frekans bileşenlerine ayırır — kabaca söylersek "bu karede ne kadar yumuşak geçiş, ne kadar keskin detay var" sorusunu matematiksel olarak yanıtlar. Sonra insan gözünün fark etmekte zorlandığı yüksek frekanslı bileşenleri kabalaştırır veya tamamen atar.
Buna bir de renk bilgisinin parlaklık bilgisinden daha agresif azaltılması eklenir; çünkü göz, parlaklık değişimlerine renk değişimlerinden çok daha duyarlıdır.
Bu yaklaşım işe yarar ve hâlâ yarıyor. Ama iki temel kısıtı var: bloklar sabit boyutlu ve algoritmanın elindeki araç seti oldukça dar. 1990'ların başındaki bilgisayarlarda makul sürede çalışması gerekiyordu.
AV1'in getirdiği fark
AVIF, AV1 adlı bir video kodeğinin kare içi kodlama yeteneğinden türetilmiştir. Kare içi kodlama, bir video karesinin komşu karelere hiç bakmadan, tek başına sıkıştırılmasıdır. Bir fotoğraf da tek bir karedir; dolayısıyla bu yeteneği doğrudan görüntü sıkıştırmaya uygulayabilirsiniz.
AV1'in JPG'ye göre elindeki avantajlar şunlar:
Değişken boyutlu bölünme. Görüntü sabit karelere bölünmek zorunda değil. Düz bir gökyüzü alanı tek bir büyük bölge olarak ele alınabilirken, yoğun detaylı bir yüz bölgesi çok daha küçük parçalara ayrılabilir. Bu, her alana ihtiyacı kadar veri harcamak demektir.
Çok daha zengin tahmin repertuvarı. Kodek, bir bölgenin içeriğini komşu bölgelerden tahmin etmeye çalışır ve yalnızca tahminle gerçek arasındaki farkı kaydeder. AV1'in elinde çok sayıda farklı tahmin yönü ve yöntemi vardır; hangisinin en az veri gerektirdiğini deneyerek bulur. JPG'de bu düzeyde bir arama yoktur.
Daha gelişmiş dönüşüm ve entropi kodlama. Kalan farkı sayısal olarak ifade etme aşamasında da AV1 daha modern ve daha verimli teknikler kullanır.
Yumuşatma araçları. Kodek, sıkıştırmanın yarattığı blok sınırlarını ve bantlaşmayı hafifletmek için ek işlemler uygulayabilir. Bu, düşük bit oranlarında görüntünün JPG'ye kıyasla çok daha az "dağılmış" görünmesini sağlar.
Toplamda ortaya çıkan sonuç şudur: aynı görsel kalitede AVIF, JPG'ye kıyasla genellikle belirgin ölçüde daha küçüktür. Yaygın olarak dile getirilen kabaca yarı yarıya oranı bir yaklaşıklıktır; gerçek kazanç görselin içeriğine göre ciddi biçimde değişir.
Kazancın büyüklüğü neye bağlı?
Verimlilik farkı her görselde aynı değil.
Fark büyük olan içerikler: Düz renk alanları, yumuşak gradyanlar, geniş gökyüzü veya duvar bölgeleri, tekrar eden desenler, düşük detay yoğunluğu. AVIF'in değişken bölünmesi ve tahmin mekanizması bu tür içerikte çok az veriyle çok şey anlatabilir.
Fark daralan içerikler: Yoğun gürültü, ince ve rastgele doku, film grenli fotoğraflar, çok yüksek detay yoğunluğu. Rastgele veri her kodek için sıkıştırılması zor bir şeydir; kimse rastgeleliği kısaltamaz.
Bu yüzden "AVIF'e geçince ne kadar kazanırım" sorusunun tek doğru cevabı, kendi görsellerinizle deneme yapmaktır.
AVIF'in JPG'de olmayan diğer yetenekleri
Boyut, farkın tek boyutu değil. AVIF, JPG'nin hiç taşıyamadığı birkaç şeyi de destekler:
- Alfa kanalı. Şeffaf ve yarı saydam alanlar taşıyabilir; JPG bunu yapamaz.
- Yüksek bit derinliği. Kanal başına 10 ve 12 bit desteklenir; JPG 8 bitle sınırlıdır. Bu, yumuşak geçişlerde bantlaşmayı azaltır.
- Geniş renk gamı ve HDR. Modern ekranların gösterebildiği geniş renk aralığını taşıyabilir.
- Kayıpsız mod. İhtiyaç halinde hiçbir veri atmadan da kaydedilebilir, ancak bu durumda boyut avantajının büyük kısmından vazgeçilir.
Bedelini konuşalım
Bu verimlilik ücretsiz değil.
Kodlama maliyeti. AVIF kodlayıcısı çok daha fazla seçeneği değerlendirdiği için bir görseli AVIF'e çevirmek, JPG'ye çevirmekten belirgin biçimde uzun sürer. Tek dosyada bu önemsizdir; binlerce görselden oluşan bir arşivde planlanması gereken bir zamandır. Çözme, yani görüntüleme tarafı ise hızlıdır.
Uyumluluk. Asıl bedel budur. Güncel ana akım tarayıcılar AVIF'i destekler, ama eski cihazlar, eski işletim sistemleri, birçok masaüstü programı ve çok sayıda yükleme formu desteklemez. Bir AVIF dosyasını e-postayla gönderdiğinizde karşı tarafın açamama ihtimali gerçektir.
Bu yüzden JPG'den AVIF'e geçerken orijinalleri saklamak ve web'de sunum yaparken bir JPG yedeği bulundurmak standart pratiktir. HTML'in picture etiketi bu iş için tasarlanmıştır: tarayıcı destekliyorsa AVIF'i, desteklemiyorsa JPG'yi indirir.
Bir uyarı: zaten sıkıştırılmış kaynak
Elinizdeki JPG zaten bir kayıplı sıkıştırmadan geçmiştir. AVIF'e çevirdiğinizde bu görüntüyü daha verimli paketlemiş olursunuz, ama kaybolmuş detay geri gelmez.
Daha önemlisi, kalite ayarını çok düşük tutarsanız iki kayıp katmanı üst üste biner. JPG'nin bıraktığı blok sınırlarını AVIF kodlayıcısı "gerçek detay" sanıp korumaya çalışabilir veya hepsini bulanıklaştırabilir. Makul bir kalite değeriyle çalışın; AVIF zaten verimli olduğu için orada bile ciddi bir boyut kazancı elde edersiniz.
Özetle
AVIF'in JPG'den küçük olmasının sebebi daha akıllı bir sıkıştırma değil, daha esnek ve daha çok hesaplama yapan bir sıkıştırmadır. Değişken bölge boyutları, geniş tahmin repertuvarı ve modern entropi kodlaması bir araya gelince aynı görsel kalite çok daha az veriyle ifade edilebiliyor. Karşılığında daha uzun kodlama süresi ve — asıl önemlisi — sınırlı ekosistem desteği ödüyorsunuz. Web hızı için bu takas genellikle değer; dosya paylaşımı için genellikle değmez.
Sıkça Sorulan Sorular
AVIF gerçekten JPG'nin yarısı kadar mı oluyor?
Sık telaffuz edilen kabaca yarı yarıya oranı bir genelleme ve yaklaşık bir rakamdır; her görselde geçerli olmaz. Kazanç büyük ölçüde içeriğe bağlıdır: düz renk alanları, yumuşak geçişler ve tekrar eden yapılar içeren görsellerde fark çok belirgin olur. Yoğun gürültü, ince doku ve rastgele detay içeren fotoğraflarda ise aradaki mesafe daralır çünkü bu tür veri her kodek için sıkıştırılması zor bir içeriktir. Kesin sonucu görmek için kendi görsellerinizle deneme yapmak tek güvenilir yoldur.
AVIF neden JPG'den daha iyi bir sıkıştırma yapabiliyor?
Temel sebep aradaki otuz yılı aşkın mühendislik farkıdır. JPG, döneminin işlemci gücüne göre tasarlanmış, görüntüyü sabit boyutlu bloklara bölen görece basit bir yöntem kullanır. AVIF ise AV1 video kodeğinin kare içi kodlamasına dayanır; görüntüyü değişken boyutlu bölgelere ayırabilir, her bölge için çok sayıda tahmin stratejisi deneyebilir ve en ucuz anlatımı seçebilir. Bu esneklik daha fazla hesaplama gerektirir ama karşılığında çok daha kompakt bir sonuç üretir.
Bu verimliliğin bir bedeli var mı?
Evet, iki tane. Birincisi kodlama süresidir: AVIF üretmek, aynı görseli JPG olarak kaydetmekten belirgin biçimde uzun sürer çünkü kodlayıcı çok daha geniş bir seçenek havuzunu tarar. İkincisi ve daha önemlisi uyumluluktur; AVIF yeni bir format olduğu için eski cihazlar, eski işletim sistemleri ve birçok masaüstü programı onu açamaz. Görüntüleme tarafındaki çözme işlemi ise hızlıdır, orada bir sorun yaşanmaz.
Zaten sıkıştırılmış bir JPG'yi AVIF'e çevirmek mantıklı mı?
Web'de sunum yapacaksanız evet, çünkü aynı görüntüyü daha az bant genişliğiyle iletmiş olursunuz ve sayfa hızı artar. Ancak beklentinizi doğru kurmanız gerekir: JPG'nin daha önce attığı detay geri gelmez, AVIF sadece kalanı verimli paketler. Ayrıca kalite ayarını fazla düşürürseniz JPG'nin mevcut artefaktlarının üzerine AVIF'in kendi bozulması biner ve sonuç gözle görülür şekilde kötüleşir. Makul bir kalite değeriyle çalışmak bu riski ortadan kaldırır.
Bu konuyu JPG → AVIF Dönüştür aracıyla hemen deneyin.
JPG → AVIF Dönüştür aracını dene