İçeriğe geç

oCompress nasıl çalışır

Bir dosyayı bıraktığınızda ne olur, hiçbir şeyin yüklenmediğini nasıl kontrol edebilirsiniz ve kayıpsız ile kayıplı sıkıştırma gerçekte ne anlama gelir.

Kısaca

Bir araç sayfasını açtığınızda tarayıcınız sayfayı ve küçük bir programı, yani sıkıştırıcıyı indirir. Bir dosya eklediğinizde tarayıcı onu okur, sıkıştırıcı onu kendi işlemcinizde işler ve sonuç size indirme olarak geri verilir. Dosya hiçbir aşamada ağ üzerinden gönderilmez. Sürecin tamamı şöyle görünür:

  1. Yükleme. Önce sayfa ve araç arayüzü yüklenir. Bir dosya türünün motoru (resimler, video ve ses ya da belgeler) yalnızca uygun bir dosya eklediğinizde alınır; böylece kullanmadığınız kodu hiçbir zaman indirmezsiniz.
  2. Okuma. Tarayıcınız sayfaya yalnızca seçtiğiniz dosyalara erişim verir, cihazınızdaki başka hiçbir şeye değil.
  3. Sıkıştırma. İş, tarayıcının bir arka plan iş parçacığı olan bir Web Worker’da çalışır; böylece sayfa yanıt vermeye devam eder ve istediğiniz zaman iptal edebilirsiniz.
  4. Kaydetme. Sıkıştırılmış dosya bellekte (büyük videolar tarayıcının özel depolama alanında) oluşturulur ve tarayıcınızın normal indirme işlemiyle, tek tek ya da ZIP olarak kaydedilir.

Tarayıcınızda neler çalışır

Modern tarayıcılar, WebAssembly sayesinde derlenmiş kodu yerel hıza yakın bir hızda çalıştırabilir ve WebCodecs adlı bir arayüz aracılığıyla web sayfalarına cihazın donanım video kodlayıcılarına erişim verir. oCompress ikisini de kullanır:

  • Resimler: JPEG için MozJPEG, PNG için OxiPNG ve bir palet nicemleyici, Google’ın libwebp kütüphanesinden WebP kodlayıcısı, AVIF için libavif, SVG için SVGO ve GIF ile TIFF için özel kod çözücüler ve kodlayıcılar. JPEG, PNG, WebP ve AVIF codec’leri WebAssembly’ye derlenmiştir.
  • Video ve ses: MP4 ve WebM gibi kapsayıcıları okumak ve yazmak için Mediabunny kütüphanesiyle birlikte WebCodecs. Kodlama, mümkün olduğunda grafik yonganızın donanım kodlayıcısını kullanır; bir tarayıcıda bile hızlı olabilmesinin nedeni budur. MP3 dosyaları LAME kodlayıcısıyla, FLAC dosyaları libFLAC ile yazılır; ikisi de WebAssembly’ye derlenmiştir ve yalnızca gerektiğinde yüklenir.
  • Belgeler: açık kaynaklı PDF ve ZIP kütüphaneleri üzerine kurulu kendi kodumuz PDF’leri ve Office dosyalarını açar, içindeki resimleri resim codec’leriyle yeniden sıkıştırır ve yeni bir dosya yazar.

Birlikte sunduğumuz her kütüphane açık kaynaklıdır: çoğu MIT, BSD ve Apache 2.0 gibi serbest lisanslar altında, Mediabunny MPL 2.0 altında, LAME MP3 kodlayıcısı ise ayrı ve değiştirilebilir bir dosya olarak LGPL altında. Sürüm ve lisanslarıyla kütüphane listesine bakın.

Hiçbir şeyin yüklenmediğini nasıl kontrol edebilirsiniz

Sözümüze güvenmek zorunda değilsiniz. İki basit test:

  • Çevrimdışı olun. Bir araç sayfasını açın, motor yüklensin diye bir dosya sıkıştırın, ardından Wi-Fi’yi veya mobil veriyi kapatın ve aynı türden başka bir dosyayı sıkıştırın. Çalışır, çünkü hiçbir şey ağa ihtiyaç duymaz.
  • Ağ trafiğini izleyin. Chrome, Edge veya Firefox’ta F12 tuşuna basın, Ağ (Network) sekmesini açın ve bir dosya sıkıştırın. Sıkıştırıcı kodunun sitemizden yüklendiğini ve analiz ile reklam isteklerini görürsünüz, ancak dosyanızı taşıyan hiçbir istek görmezsiniz. 10 MB’lık bir fotoğraf 10 MB’lık bir yükleme olarak görünürdü; böyle bir şey yok.

Sayfa, Google Analytics’e “birkaç megabaytlık bir JPG sıkıştırıldı” gibi anonim kullanım olayları gönderir. Bu olaylar aracı, dosya türünü ve boyut, tasarruf ve işlem süresini kaba aralıklar olarak içerir; asla dosya adını veya içeriğini içermez.

Kayıpsız sıkıştırma: aynı içerik, daha az bayt

Kayıpsız sıkıştırma fazlalığı, yani birden fazla kez saklanan veya tahmin edilebilen şeyleri bulur ve bunları daha sıkı biçimde yazar. Kod çözme bu işlemi tam olarak tersine çevirir. Neredeyse her kayıpsız formatta üç fikir görülür:

  • Tahmin. Bir resimdeki komşu pikseller veya bir sesteki ardışık örnekler genellikle birbirine benzer. Tam değer yerine bir tahminden küçük farkı saklamak, çoğunlukla sıfıra yakın sayılar bırakır. PNG filtreleri ve FLAC’ın doğrusal tahmin edicisi bu şekilde çalışır.
  • Tekrar. Tekrarlanan diziler, önceki kopyaya verilen kısa bir başvuruyla değiştirilir. Bu, ZIP, PNG ve Office dosyalarında kullanılan DEFLATE’in LZ77 kısmıdır.
  • Entropi kodlaması. Sık görülen değerler kısa, nadir değerler uzun kodlar alır (Huffman veya aritmetik kodlama).

Kayıpsız sıkıştırmanın doğal bir sınırı vardır: rastgele gürültü tahmin edilemez, bu yüzden grenli bir fotoğraf veya gürültülü bir kayıt kayıp olmadan hiçbir zaman çok küçülmez. Bir ZIP içindeki JPEG gibi zaten sıkıştırılmış bir dosyayı sıkıştırmanın neredeyse hiçbir şey kazandırmamasının nedeni de budur.

Kayıplı sıkıştırma: eksikliğini hissetmeyeceğiniz şeyleri atmak

Kayıplı codec’ler, insan gözünün ve kulağının zar zor algıladığı bilgileri atarak daha ileri gider. JPEG ve WebP rengi parlaklıktan daha düşük çözünürlükte saklar ve yüksek frekanslı ince ayrıntıları yuvarlayarak atar. MP3, AAC ve Opus daha yüksek seslerin maskelediği sesleri atar. H.264 gibi video codec’leri arada bir tam bir resim saklar, aralarda ise çoğunlukla hareketi ve değişiklikleri.

Kalite veya bit hızı ayarı ne kadarının atılacağını belirler. Orta düzey ayarlarda kaybı fark etmek çok zordur; fazla zorlarsanız tipik bozulmalar ortaya çıkar: resimlerde bloklar ve haleler, seste metalik veya su altı gibi bir ses, hızlı video sahnelerinde lekelenme.

Araçların vaat ettikleri ve etmedikleri

  • Asla daha büyük bir dosya almazsınız. Sonuç daha küçük değilse araç orijinali geri verir ve zaten optimal olduğunu size bildirir.
  • Belgeler ve ses dosyaları aynı dosya ve ayarlar için birebir aynı baytları verir; donanım video kodlayıcıları ise çalıştırmalar arasında birkaç bayt farklılık gösterebilir.
  • Belgelerdeki metin metin olarak kalır; sayfalar asla resme dönüştürülmez.
  • GPS konumu gibi resim meta verileri varsayılan olarak kaldırılır, renk profili ve döndürme bilgisi ise korunur. Konum, cihaz ve tarihler gibi video meta verileri de varsayılan olarak kaldırılır; ses dosyaları ise siz kapatmadıkça etiketlerini ve kapak resimlerini korur.

Vaat edemeyeceğimiz şey belirli bir yüzdedir. Tasarruf tamamen dosyanın nasıl oluşturulduğuna bağlıdır: bir telefon fotoğrafında veya taranmış bir PDF’te genellikle bolca pay vardır, zaten optimize edilmiş bir dosyada ise az. Araç her dosya için tam önceki ve sonraki boyutları gösterir.

Tarayıcıda sıkıştırmanın sınırları

Bir tarayıcı sekmesi sınırlı belleğe sahip bir korumalı alandır ve bu, neyin pratik olduğunun sınırlarını belirler. Araç 200 MB ve 100 megapiksele kadar resimleri, 300 MB’a kadar PDF ve Office dosyalarını ve bilgisayarda 4 GB’a (telefonlarda 1 GB) kadar video ve sesi kabul eder; yine de uzun 4K videolar bir sekmenin belleğine sığmayabilir. Hız donanımınıza bağlıdır: hızlı bir Windows bilgisayarda Chrome ile yaptığımız testlerde bir dakikalık 1080p video yaklaşık 20 saniye, 24 megapiksellik bir fotoğraf yaklaşık 2,5 saniye sürdü; telefonlar çok daha yavaş olabilir. Video ve çoğu ses dönüştürme işlemi, güncel Chrome, Edge, Opera, Firefox 130+ ve Safari 26+ sürümlerinin sağladığı WebCodecs’i gerektirir; WAV ve AIFF onsuz da MP3, FLAC veya WAV’a dönüşebilir.

WMA, AVI ve WMV gibi birkaç formatın tarayıcılarda hiç kod çözücüsü yoktur ve eski ikili Office dosyaları güvenle yeniden yazılamaz. Bunlar için araç, hasarlı olabilecek bir dosya üretmek yerine seçenekleri açıklar. Bir iş tarayıcı için fazla büyük olduğunda, video için HandBrake veya belgeler için LibreOffice gibi bir masaüstü programı dürüst öneridir.