Przejdź do treści

Jak działa oCompress

Co się dzieje, gdy upuszczasz plik, jak sprawdzić, że nic nie jest wysyłane, i co naprawdę oznacza kompresja bezstratna i stratna.

W skrócie

Gdy otwierasz stronę narzędzia, przeglądarka pobiera stronę i mały program – kompresor. Gdy dodajesz plik, przeglądarka go odczytuje, kompresor przetwarza go na twoim procesorze, a wynik wraca do ciebie jako plik do pobrania. Plik w żadnym momencie nie jest wysyłany przez sieć. Cały proces wygląda tak:

  1. Ładowanie. Najpierw ładują się strona i interfejs narzędzia. Silnik dla danego typu plików (obrazy, wideo i audio albo dokumenty) jest pobierany dopiero wtedy, gdy dodasz pasujący plik, więc nigdy nie pobierasz kodu, którego nie używasz.
  2. Odczyt. Przeglądarka daje stronie dostęp dokładnie do wybranych przez ciebie plików i do niczego innego na twoim urządzeniu.
  3. Kompresja. Praca odbywa się w Web Workerze, czyli wątku przeglądarki działającym w tle, więc strona reaguje płynnie, a ty możesz w każdej chwili przerwać zadanie.
  4. Zapis. Skompresowany plik powstaje w pamięci (duże filmy – w prywatnej pamięci przeglądarki) i jest zapisywany przez zwykłe pobieranie w przeglądarce, pojedynczo albo jako ZIP.

Co działa w twojej przeglądarce

Nowoczesne przeglądarki potrafią uruchamiać skompilowany kod z prędkością bliską natywnej dzięki WebAssembly i dają stronom dostęp do sprzętowych koderów wideo urządzenia przez interfejs WebCodecs. oCompress korzysta z obu:

  • Obrazy: MozJPEG dla JPEG, OxiPNG i kwantyzator palety dla PNG, koder WebP z biblioteki libwebp od Google, libavif dla AVIF, SVGO dla SVG oraz dedykowane dekodery i kodery dla GIF i TIFF. Kodeki JPEG, PNG, WebP i AVIF są skompilowane do WebAssembly.
  • Wideo i audio: WebCodecs z biblioteką Mediabunny do odczytu i zapisu kontenerów, takich jak MP4 i WebM. Kodowanie korzysta ze sprzętowego kodera układu graficznego, jeśli jest dostępny, dlatego może być szybkie nawet w przeglądarce. Pliki MP3 zapisuje koder LAME, a pliki FLAC – libFLAC; oba są skompilowane do WebAssembly i ładowane tylko w razie potrzeby.
  • Dokumenty: nasz własny kod oparty na otwartoźródłowych bibliotekach PDF i ZIP otwiera pliki PDF i Office, ponownie kompresuje obrazy w środku za pomocą kodeków obrazów i zapisuje nowy plik.

Każda biblioteka, którą dostarczamy, jest otwartoźródłowa: większość na liberalnych licencjach, takich jak MIT, BSD i Apache 2.0, Mediabunny na licencji MPL 2.0, a koder MP3 LAME na licencji LGPL jako osobny, wymienialny plik. Zobacz listę bibliotek z wersjami i licencjami.

Jak sprawdzić, że nic nie jest wysyłane

Nie musisz wierzyć nam na słowo. Dwa proste testy:

  • Przejdź w tryb offline. Otwórz stronę narzędzia, skompresuj jeden plik, żeby silnik się załadował, a potem wyłącz Wi-Fi lub dane komórkowe i skompresuj kolejny plik tego samego typu. Działa, bo nic nie potrzebuje sieci.
  • Obserwuj ruch sieciowy. W Chrome, Edge lub Firefoksie naciśnij F12, otwórz kartę Sieć i skompresuj plik. Zobaczysz ładowanie kodu kompresora z naszej strony oraz żądania analityki i reklam, ale żadnego żądania z twoim plikiem. Zdjęcie o rozmiarze 10 MB byłoby widoczne jako wysyłka 10 MB; takiej nie ma.

Strona wysyła do Google Analytics anonimowe zdarzenia użycia, np. „skompresowano JPG o rozmiarze kilku megabajtów”. Zdarzenia te zawierają narzędzie, typ pliku oraz – w przybliżonych przedziałach – rozmiar, oszczędność i czas przetwarzania, nigdy nazwę pliku ani jego zawartość.

Kompresja bezstratna: ta sama treść, mniej bajtów

Kompresja bezstratna wyszukuje nadmiarowość – rzeczy zapisane więcej niż raz lub dające się przewidzieć – i zapisuje je bardziej zwięźle. Dekodowanie dokładnie odwraca ten proces. W niemal każdym formacie bezstratnym pojawiają się trzy idee:

  • Predykcja. Sąsiednie piksele obrazu lub kolejne próbki dźwięku są zwykle podobne. Zapisanie niewielkiej różnicy względem przewidywania zamiast pełnej wartości daje liczby w większości bliskie zeru. Tak działają filtry PNG i predyktor liniowy FLAC.
  • Powtórzenia. Powtarzające się sekwencje są zastępowane krótkim odwołaniem do wcześniejszej kopii. To część LZ77 algorytmu DEFLATE, używanego w ZIP, PNG i plikach Office.
  • Kodowanie entropijne. Częste wartości dostają krótkie kody, a rzadkie – długie (kodowanie Huffmana lub arytmetyczne).

Kompresja bezstratna ma naturalną granicę: losowego szumu nie da się przewidzieć, więc ziarniste zdjęcie czy zaszumione nagranie nigdy nie zmniejszy się znacząco bez strat. Z tego samego powodu kompresja pliku już skompresowanego, np. JPEG-a w archiwum ZIP, nie daje prawie nic.

Kompresja stratna: usuwanie tego, czego nie zauważysz

Kodeki stratne idą dalej i odrzucają informacje, które ludzkie oczy i uszy ledwo dostrzegają. JPEG i WebP zapisują kolor w niższej rozdzielczości niż jasność i zaokrąglają drobne szczegóły o wysokiej częstotliwości. MP3, AAC i Opus pomijają dźwięki zagłuszane przez głośniejsze. Kodeki wideo, takie jak H.264, co jakiś czas zapisują pełny obraz, a pomiędzy nimi głównie ruch i zmiany.

Ustawienie jakości lub bitrate decyduje o tym, ile zostanie odrzucone. Przy umiarkowanych ustawieniach stratę bardzo trudno zauważyć; jeśli przesadzisz, pojawiają się typowe artefakty: bloki i obwódki na obrazach, metaliczny lub „podwodny” dźwięk w audio, smużenie w szybkich scenach wideo.

Co narzędzia obiecują, a czego nie

  • Nigdy nie dostaniesz większego pliku. Jeśli wynik nie jest mniejszy, narzędzie zwraca oryginał i informuje, że jest już optymalny.
  • Dokumenty i pliki audio dają identyczne bajty dla tego samego pliku i tych samych ustawień; sprzętowe kodery wideo mogą różnić się o kilka bajtów między uruchomieniami.
  • Tekst w dokumentach pozostaje tekstem; strony nigdy nie są zamieniane w obrazy.
  • Metadane obrazów, takie jak lokalizacja GPS, są domyślnie usuwane, a profil kolorów i obrót zostają zachowane. Metadane wideo, takie jak lokalizacja, urządzenie i daty, również są domyślnie usuwane; audio zachowuje tagi i okładkę, chyba że to wyłączysz.

Nie możemy obiecać konkretnego procentu. Oszczędność zależy wyłącznie od tego, jak plik powstał: zdjęcie z telefonu lub zeskanowany PDF ma zwykle dużo zapasu, a plik, który już zoptymalizowano – niewiele. Narzędzie pokazuje dokładne rozmiary przed i po dla każdego pliku.

Ograniczenia kompresji w przeglądarce

Karta przeglądarki to piaskownica z ograniczoną pamięcią, co wyznacza granice tego, co praktyczne. Narzędzie przyjmuje obrazy do 200 MB i 100 megapikseli, pliki PDF i Office do 300 MB oraz wideo i audio do 4 GB na komputerze (1 GB na telefonach), choć długie filmy 4K i tak mogą nie zmieścić się w pamięci karty. Szybkość zależy od sprzętu: w naszych testach na szybkim komputerze z Windows w Chrome minuta wideo 1080p zajęła ok. 20 sekund, a zdjęcie 24-megapikselowe ok. 2,5 sekundy; telefony mogą być znacznie wolniejsze. Wideo i większość konwersji audio wymagają WebCodecs, które zapewniają aktualne wersje Chrome, Edge i Opery, Firefox 130+ i Safari 26+; WAV i AIFF mogą stać się MP3, FLAC lub WAV nawet bez tego interfejsu.

Niektóre formaty w ogóle nie mają dekodera w przeglądarkach, np. WMA, AVI i WMV, a starych binarnych plików Office nie da się bezpiecznie przepisać. W ich przypadku narzędzie wyjaśnia dostępne opcje, zamiast tworzyć plik, który mógłby być uszkodzony. Gdy zadanie jest za duże dla przeglądarki, uczciwą rekomendacją jest program na komputer, np. HandBrake do wideo lub LibreOffice do dokumentów.