Skip to main content
LadeStack LogoLadeStack
Performance 5 dk okuma 20 Mart 2026

Modern Web Görüntü Sıkıştırma Standartları: Tarayıcıda Canvas, WebP ve AVIF Karşılaştırması

Yüksek performanslı web uygulamalarında tarayıcı içi görsel optimizasyonu: HTML5 Canvas, WebP kodlama ve AVIF sıkıştırma oranlarının teknik incelemesi ve CPU başarım analizi.

Görsel Sıkıştırma Matrisi Canvas WebP AVIF

Görseller, modern web sitelerinde toplam sayfa ağırlığının en büyük bileşeni olmaya devam etmektedir. HTTP Archive analizlerine göre, ortalama bir web sayfasında aktarılan toplam baytların %45’inden fazlasını görseller oluşturur. Web geliştiricileri ve SaaS ekipleri için, sıkı Core Web Vitals (özellikle En Büyük İçerikli Boyama: LCP) hedeflerine uyarken yüksek kaliteli görseller sunabilmek akılcı varlık optimizasyonunu zorunlu kılar.

Geleneksel olarak görsel sıkıştırma denildiğinde Node.js üzerindeki Sharp veya Cloudinary gibi sunucu tarafı altyapılar akla gelirdi. Ancak modern tarayıcı API’leri sayesinde, dosyalar sunucuya gönderilmeden önce doğrudan istemci (tarayıcı) üzerinde yüksek oranlı kayıplı ve kayıpsız sıkıştırma gerçekleştirmek mümkün hale gelmiştir.

Bu rehberde, LadeStack’in tarayıcı tabanlı görsel optimizasyon aracı olan LS Image bünyesinde uygulanan üç temel istemci tarafı optimizasyon yaklaşımını inceleyecek; sıkıştırma oranlarını, tarayıcı uyumluluklarını ve işlemci yüklerini kıyaslayacağız.


Yöntem 1: HTML5 Canvas 2D ile Yeniden Kodlama

En yalın ve evrensel istemci tarafı sıkıştırma yöntemi, tarayıcının yerleşik 2D Canvas işleme motorundan yararlanmaktır. Bir görsel HTML5 <canvas> öğesine çizildikten sonra, geliştiriciler HTMLCanvasElement.toBlob() çağrısıyla piksel dizisini doğrudan dışa aktarabilir.

/**
 * Yerel HTML5 Canvas API kullanarak görsel sıkıştırma
 */
export async function compressViaCanvas(
  file: File,
  quality: number = 0.8,
  targetFormat: 'image/jpeg' | 'image/webp' = 'image/webp'
): Promise<Blob> {
  const bitmap = await createImageBitmap(file);
  const canvas = document.createElement('canvas');
  canvas.width = bitmap.width;
  canvas.height = bitmap.height;

  const ctx = canvas.getContext('2d', { alpha: targetFormat === 'image/webp' });
  if (!ctx) {
    throw new Error('Canvas 2D context not supported');
  }

  ctx.drawImage(bitmap, 0, 0);

  return new Promise((resolve, reject) => {
    canvas.toBlob(
      (blob) => {
        if (blob) resolve(blob);
        else reject(new Error('Canvas toBlob serialization failed'));
      },
      targetFormat,
      quality
    );
  });
}

Canvas ile Yeniden Kodlamanın Avantajları:

  • Sıfır Dış Bağımlılık: Üçüncü taraf JavaScript kütüphanelerine gerek kalmaksızın tarayıcının yerleşik GPU/CPU grafik hattını kullanır.
  • Donanım Hızlandırma: Modern tarayıcılar rasterleştirme ve piksel filtreleme işlemlerini doğrudan cihazın grafik yongasına (GPU) devreder.
  • Evrensel Uyumluluk: Tüm modern masaüstü ve mobil tarayıcılarda %100 oranında desteklenir.

Yöntem 2: Yerel WebP Kodlama

Google tarafından geliştirilen WebP formatı, web görselleri için fiili endüstri standardı haline gelmiştir. Eşdeğer SSIM (Yapısal Benzerlik İndeksi) kalite puanlarında geleneksel JPEG dosyalarına kıyasla %25 ila %34 arasında daha küçük dosya boyutları sunar.

İstemci tarafı JavaScript’te WebP kodlama, canvas.toBlob(callback, 'image/webp', quality) çağrısıyla doğrudan tetiklenebilir. Modern tarayıcı motorları (Blink, Gecko ve Safari 14’ten itibaren WebKit) optimize edilmiş libwebp kodlayıcılarını çalışma zamanı bünyesinde barındırır.

// Belirli bir bayt sınırını karşılamak için kademeli kalite düşürme
export async function compressToByteBudget(
  file: File,
  maxBytes: number = 200 * 1024 // Hedef: 200 KB
): Promise<Blob> {
  let quality = 0.85;
  let compressedBlob = await compressViaCanvas(file, quality, 'image/webp');

  while (compressedBlob.size > maxBytes && quality > 0.4) {
    quality -= 0.1;
    compressedBlob = await compressViaCanvas(file, quality, 'image/webp');
  }

  return compressedBlob;
}

Yöntem 3: Yeni Nesil AVIF Sıkıştırma

Alliance for Open Media (AOMedia) tarafından geliştirilen AV1 video kodekini temel alan AVIF (AV1 Image File Format), görüntü sıkıştırma teknolojisinin en ileri noktasını temsil eder. WebP’nin belirgin biçimde ötesine geçerek JPEG’e kıyasla %50’ye varan, WebP’ye kıyasla ise ilave %20’lik dosya boyutu tasarrufu sağlar; aynı zamanda yüksek frekanslı dokuları, renk geçişlerini ve keskin metin kenarlarını olağanüstü biçimde korur.

Chromium tabanlı tarayıcılarda canvas.toBlob('image/avif') desteği yaygınlaşırken, WebAssembly (Wasm) ile derlenmiş libavif modülleri sayesinde tüm modern tarayıcılarda güvenilir AVIF dönüşümü sağlanabilmektedir.


Biçim Yetenekleri ve Mimari Tercihler

Donanım gücüne ve görsel entropiye göre ciddi farklılıklar gösteren yapay kıyaslama rakamları yerine, mühendislik değerlendirmeleri biçimlerin yapısal özelliklerine, algoritma verimliliğine ve tarayıcı yürütme hatlarına odaklanmalıdır:

Biçim ve Kodlama Yöntemi Göreceli Sıkıştırma Başarımı Tarayıcı İçi Yürütme Hattı İşlemci Yükü Temel Mühendislik Uygunluğu
Standart Temel JPEG Referans (0%) Yerel HTML5 Canvas 2D (image/jpeg) Minimum (Donanım hızlandırmalı) Eski istemciler için uyumluluk yedeği
Canvas WebP (image/webp) JPEG’e göre ~%25–35 kazanç Yerel HTML5 Canvas 2D motoru Düşük (Arayüz iş parçacığında anlık) Gerçek zamanlı yüklemeler ve toplu işlem
WebAssembly AVIF (libavif) JPEG’e göre ~%40–55 kazanç Derlenmiş C/Rust WASM çalışan iş parçacığı Yüksek (Yoğun CPU kullanan çoklu geçiş) Arşivleme ve kritik bant genişliği tasarrufu

Mühendislik Notu: Üretim ortamlarında gerçek sıkıştırma oranları ve süreler; görsel entropiye, çözünürlüğe, cihazın termal durumuna ve tarayıcı JavaScript motoruna göre değişiklik gösterir. Genel web uygulamaları için yerel Canvas WebP en dengeli çözümü sunarken, AVIF kodlaması kullanıcı arayüzünde donmaları önlemek adına kesinlikle Web Worker iş parçacıklarına devredilmelidir.

Mimari Çıkarımlar:

  1. Gerçek Zamanlı Kullanıcı Akışları: Yerel Canvas WebP önerilen varsayılandır. Harici WASM paketlerine ihtiyaç duymadan tarayıcının yerel grafik gücünden faydalanır.
  2. Maksimum Bant Genişliği Tasarrufu: AVIF benzersiz sıkıştırma verimliliği sağlar, ancak artan işlemci maliyetini yönetmek için Web Worker kullanımı şarttır.

İstemci Optimizasyonunun Web Projelerine Entegrasyonu

Görselleri Amazon S3, Cloudflare R2 veya Firebase Storage gibi bulut depolama alanlarına yüklemeden önce istemci tarafında sıkıştırmak üç temel operasyonel kazanım sağlar:

  • Düşen Depolama Maliyetleri: 5 MB ham JPEG yerine 700 KB WebP depolamak, kalıcı depolama harcamalarını %80’in üzerinde azaltır.
  • Hızlanan Yükleme Süreçleri: Mobil ağlarda küçülen veri paketleri sayesinde form doldurma ve dosya yükleme terk oranları belirgin biçimde düşer.
  • Daha Düşük Giden Veri (Egress) Gideri: Ziyaretçilerin daha küçük boyutlu dosyalar indirmesi, LCP puanlarını iyileştirir ve arama motoru optimizasyonuna (SEO) doğrudan katkı sağlar.

Görsellerinizi harici sunuculara yüklemeden tarayıcınızda hemen optimize etmek için LadeStack’in LS Image Görsel Sıkıştırıcı aracını deneyin. Daha fazla teknik rehber için Geliştirici Belgelerimizi inceleyebilirsiniz.