Spory o formaty zwykle zaczynają się od kodeka i idą na zewnątrz. To odwrotna kolejność. O właściwym formacie decyduje to, co jest na obrazie, a dopiero potem to, co przyjmuje system po drugiej stronie.
Zdjęcia: JPEG albo WebP
Obrazy o ciągłej tonacji — twarze, krajobrazy, wszystko z gradientami i szumem — dobrze się kompresują kodekami stratnymi, bo oko toleruje drobne błędy w zatłoczonych obszarach. JPEG jest bezpiecznym wyborem domyślnym, bo przyjmuje go wszystko. Stratny WebP osiąga tę samą postrzeganą jakość w zauważalnie mniejszej liczbie bajtów, więc wygrywa wszędzie tam, gdzie miejsce docelowe na niego pozwala.
Jedno zastrzeżenie, jeśli używasz do tego ToolZool: nasz kompresor zapisuje WebP wyłącznie w trybie bezstratnym, co na zdjęciu daje plik kilkakrotnie większy niż JPEG. Przy zdjęciu z limitem rozmiaru wybierz tutaj JPEG. Powód tej różnicy opisuje strona samego kompresora — nie istnieje stratny koder WebP, który moglibyśmy dostarczyć bez niezgodnej licencji albo łańcucha narzędzi C.
Płaska grafika i tekst: PNG
Logotypy, ikony, diagramy i zrzuty ekranu interfejsów składają się z ostrych krawędzi i dużych obszarów jednolitego koloru. Kodeki stratne źle radzą sobie z ostrymi krawędziami: wokół tekstu pojawiają się widoczne obwódki, a ponieważ wprowadzany przez nie szum sam w sobie jest kosztowny w zakodowaniu, plik często wychodzi większy niż bezstratny PNG tego samego obrazu.
Przezroczystość przesądza wybór
JPEG nie ma kanału alfa. Przekonwertuj przezroczysty PNG do JPEG, a przezroczyste obszary staną się jednolite — zwykle czarne, czasem białe, rzadko takie, jak chciałeś. PNG i WebP obsługują alfę, więc jeśli obraz ma przezroczystość, lista skraca się do tych dwóch.
Gdzie w tym wszystkim jest AVIF
AVIF bije WebP na rozmiarze pliku przy tej samej jakości, zwłaszcza przy niskich przepływnościach, i wyświetli go każda dzisiejsza przeglądarka. Problemem jest kodowanie: jest dramatycznie wolniejsze i znacznie cięższe niż w JPEG czy WebP, co ma znaczenie, gdy kodowanie dzieje się na telefonie, a nie na serwerze buildów.
ToolZool dziś ani nie czyta, ani nie zapisuje AVIF. Oba kierunki wymagają kodeka AV1, a każdy utrzymywany to biblioteka w C, której nie da się zbudować do WebAssembly — więc plik AVIF trzeba najpierw przekonwertować gdzie indziej. To samo dotyczy HEIC, który większość iPhone’ów tworzy domyślnie.
Pytanie, które unieważnia wszystkie powyższe
Co przyjmuje formularz? Lepszy format, który zostanie odrzucony, nie jest lepszy. Najpierw przeczytaj listę akceptowanych formatów, a potem optymalizuj w jej ramach — a jeśli plik, który wygląda na spełniający wymagania, wciąż zostaje odrzucony, tekst dlaczego formularz wysyłania odrzuca twój plik przechodzi przez cztery kontrole, które formularz naprawdę wykonuje. Jeśli musisz przejść między formatami, kompresja obrazu czyta JPG, PNG i WebP, a zapisuje JPEG, PNG albo bezstratny WebP, więc w tym zakresie działa też jako konwerter.

