Poprawnie – spośród podanych formatów to właśnie JPEG wykorzystuje kompresję stratną. Oznacza to, że podczas zapisu obrazu część informacji o pikselach jest bezpowrotnie usuwana, żeby zmniejszyć rozmiar pliku. Algorytm JPEG analizuje obraz, rozkłada go na składowe (m.in. za pomocą DCT – dyskretnej transformacji cosinusowej), a następnie odrzuca te detale, których ludzkie oko zazwyczaj i tak nie zauważa, szczególnie w przejściach tonalnych i drobnych teksturach. Dzięki temu zdjęcie może ważyć np. 10 razy mniej niż w BMP, przy akceptowalnej jakości. W praktyce JPEG jest standardem do zapisu fotografii na stronach WWW, w mediach społecznościowych, w aparatach cyfrowych czy telefonach. Stosuje się go tam, gdzie ważniejszy jest mały rozmiar pliku niż idealna, bezstratna jakość – np. galerie produktowe w sklepach internetowych, blogi, portfolia. Dobrą praktyką w webdevie jest używanie JPEG do zdjęć i skomplikowanych obrazów, a PNG lub SVG do grafiki z ostrymi krawędziami, logotypów, ikon. Warto też pamiętać o ustawianiu rozsądnego poziomu kompresji: zbyt mocna kompresja JPEG powoduje widoczne artefakty (blokowe kwadraty, rozmycia krawędzi), zbyt słaba – niepotrzebnie duże pliki. Moim zdaniem sensownie jest testować kilka poziomów jakości (np. 60–80%) i wybierać kompromis między wagą a wyglądem, bo to dokładnie ta decyzja, z którą spotykasz się później w realnych projektach WWW.
W tym pytaniu kluczowe jest rozróżnienie między kompresją stratną a bezstratną oraz zrozumienie charakteru poszczególnych formatów graficznych. Kompresja stratna polega na takim przetworzeniu obrazu, które usuwa część informacji na stałe, w zamian za znaczne zmniejszenie rozmiaru pliku. Po zapisaniu i ponownym odczycie nie da się odtworzyć dokładnie oryginalnych danych. Kompresja bezstratna działa inaczej: dane są tylko „upakowane” w sprytniejszy sposób, ale po rozpakowaniu dostajemy dokładnie to samo, co przed zapisem. To jest bardzo ważne np. przy grafice interfejsu, schematach, ikonach czy plikach źródłowych. Format GIF korzysta z kompresji bezstratnej LZW, choć sam w sobie ma bardzo poważne ograniczenie: paleta maksymalnie 256 kolorów. Przez to wiele osób myli ten brak jakości z kompresją stratną, a to tylko ograniczenie liczby barw, a nie mechanizm usuwania informacji przy każdorazowym zapisie. GIF jest więc bezstratny w obrębie tej swojej ograniczonej palety. BMP z kolei jest formatem w zasadzie nieskompresowanym (albo minimalnie), przechowuje piksele bardzo „topornie”, przez co pliki są ogromne, ale nie tracą informacji – nic tam nie jest celowo usuwane. To typowy przykład formatu, który w nowoczesnych projektach webowych praktycznie się nie stosuje, właśnie ze względu na wagę. PNG używa kompresji bezstratnej (Deflate), a jego główną zaletą jest możliwość zachowania pełnej jakości obrazu, przezroczystości (kanał alfa) i bardzo ostrej grafiki. Jest świetny do logotypów, ikon, elementów UI, wykresów. Jeśli ktoś wybiera PNG jako „stratny”, to zwykle wynika to z prostego skojarzenia: małe pliki = pewnie stratne. A tu odwrotnie – PNG potrafi mieć niezłą kompresję, ale nie poświęca przy tym jakości. Jedynym z podanych formatów, który rzeczywiście stosuje kompresję stratną, jest JPEG. Jego algorytmy są projektowane pod ludzkie oko, odrzucają informacje, które mają najmniejszy wpływ na subiektywnie odbieraną jakość. To dlatego JPEG jest królem zdjęć w Internecie, a GIF i PNG pozostają formatami bezstratnymi (w swoich założeniach), a BMP praktycznie nieużywanym reliktem, jeśli chodzi o nowoczesne strony WWW. Z mojego doświadczenia typowy błąd polega na wrzucaniu wszystkiego jako PNG „bo ładniejsze”, albo traktowaniu GIF-a jako stratnego „bo wygląda gorzej”, zamiast świadomie dobrać format do typu grafiki i mechanizmu kompresji.