Dlaczego pliki PNG są w ogóle ciężkie
PNG jest bezstratny: każdy piksel jest zapisywany dokładnie, a jedyną oszczędność daje uniwersalny kompresor podobny do ZIP. Typowy PNG z narzędzia do zrzutów ekranu lub aplikacji projektowej jest zapisany w pełnym kolorze z kanałem alfa, czyli 4 bajty na piksel przed kompresją. Zrzut ekranu 1920×1080 to około 8 MB surowych danych pikseli, a nawet po kompresji często waży od 1 do 3 MB.
Większość tych informacji pozostaje niewykorzystana. Zrzut ekranu strony internetowej może zawierać kilkaset różnych kolorów. Logo — kilkanaście, plus wygładzone odcienie wzdłuż krawędzi. Zapisywanie każdego piksela jako pełnej 32-bitowej wartości to przesada dla tego rodzaju obrazów i właśnie tę lukę wykorzystuje to narzędzie.
Jak działa kwantyzacja palety
Zamiast zapisywać kolor każdego piksela, indeksowany PNG przechowuje paletę do 256 kolorów, a każdy piksel zapisuje jako jeden bajt wskazujący na pozycję w niej. Cała praca polega na wyborze palety. Narzędzie wielokrotnie dzieli kolory obrazu na grupy wzdłuż kierunku, w którym najbardziej się różnią, aż uzyska tyle grup, ile wynosi wybrany poziom, a następnie używa średniej każdej grupy jako pozycji palety. Potem każdy piksel jest przypisywany do najbliższej pozycji.
Przezroczystość jest częścią tego samego procesu: każda pozycja palety ma własną wartość alfa, więc miękki cień czy wygładzona krawędź na przezroczystym tle przetrwają jako kilka półprzezroczystych kolorów palety, a nie jako ostre wycięcie.
Trzy przyciski ustawiają rozmiar palety:
- Wysoka · 256: najwięcej kolorów, jakie może pomieścić PNG z paletą. Ikony, logo, zrzuty interfejsu i diagramy zwykle wyglądają identycznie jak oryginał.
- Średnia · 128: nadal czysto na płaskich grafikach i ilustracjach o ograniczonej liczbie kolorów. Warto spróbować przy zrzutach interfejsu.
- Niska · 64: dla prostych grafik, takich jak wykresy, rysunki liniowe i ikony z niewielką liczbą kolorów. Na subtelnych przejściach zaczynają być widoczne stopnie.
Obraz jest następnie zapisywany ze standardową kompresją PNG i zachowuje oryginalną nazwę pliku.
Obrazy, którym to służy, i te, którym nie
Kwantyzacja sprawdza się najlepiej przy treściach stworzonych cyfrowo:
- Zrzuty ekranu aplikacji i stron, zwłaszcza z dużymi jednolitymi obszarami.
- Logo, ikony i odznaki z przezroczystością.
- Wykresy, diagramy, mapy i makiety interfejsów.
- Pixel art, który często przechodzi bez zmian nawet przez ustawienie Niska.
Gorzej radzi sobie z gładkimi przejściami i fotografiami. Narzędzie przypisuje każdy piksel do najbliższego koloru palety bez ditheringu, więc niebo czy miękka winieta, które wymagają tysięcy odcieni, zamieniają się w widoczne pasy. Dla zdjęć lepiej sprawdza się format stratny: przepuść je przez PNG na JPG, jeśli przezroczystość nie jest potrzebna, albo zachowaj ją dzięki PNG na WebP.
Sprawdzanie wyniku
Każdy wiersz pliku pokazuje obok siebie rozmiar oryginalny i nowy. Jeśli kwantyzacja nie potrafi zmniejszyć pliku, narzędzie zwraca nietknięty oryginał, a wiersz informuje, że go zachowano. Zdarza się to przy PNG, które już były indeksowane lub mocno zoptymalizowane innym narzędziem, oraz przy obrazach pełnych drobnego szumu.
Aby ocenić jakość, otwórz oryginał i wynik obok siebie w narzędziu porównaj dwa obrazy i przeciągnij suwak przez przejścia tonalne i krawędzie. Jeśli widzisz pasmowanie, podnieś poziom o jeden; jeśli Średnia wygląda identycznie jak Wysoka, weź mniejszy plik.
Uwagi praktyczne
- Fragmenty tekstowe i metadane z oryginału, takie jak informacja o programie, w którym powstał plik, czy osadzone komentarze, nie są przenoszone, bo obraz jest dekodowany i zapisywany od nowa. Plik zwrócony bez zmian, bo nie dało się go zmniejszyć, je zachowuje.
- Akceptowane są tylko pliki PNG. Pliki do 50 MB każdy działają, ale bardzo duże obrazy trwają dłużej: każdy piksel musi zostać przeanalizowany przy budowaniu palety, więc PNG 6000×4000 może się przetwarzać zauważalnie dłużej niż zrzut ekranu.
- Tam, gdzie to możliwe, przetwarzanie odbywa się w wątku roboczym w tle przeglądarki. Nic nie jest wysyłane, a partię można pobrać jako jeden ZIP.
- Zmniejszenie wymiarów często ma większe znaczenie niż paleta. Zrzut ekranu retina 2× przeskalowany do rozmiaru wyświetlania ma cztery razy mniej pikseli, zanim kwantyzacja w ogóle się zacznie.