Grafika i multimedia w kwalifikacji INF.03: najważniejsze zasady, przykłady i 129 powiązanych pytań w banku.
Obraz na stronie to wymiana jakości na bajty, a każdy element tej wymiany daje się policzyć. Liczą się wymiary w pikselach, liczba bitów na piksel, rodzaj kompresji i możliwości formatu. Zamiast uczyć się listy rozszerzeń, sprawdzaj, co format potrafi zapisać: pełny kolor czy paletę, przezroczystość płynną czy binarną, jedną klatkę czy animację. Ta sama zasada obowiązuje w dźwięku i wideo, gdzie o odtworzeniu decyduje kodek zapisany w środku pliku, a nie rozszerzenie.
Raster i wektor: kiedy który
Obraz rastrowy to siatka pikseli o stałych wymiarach: powiększenie nie tworzy szczegółów, tylko dolicza piksele interpolacją (najbliższy sąsiad daje schodki, dwusześcienna rozmycie). Obraz wektorowy przechowuje opis figur: współrzędne, krzywe Beziera, grubości linii i wypełnienia, a piksele powstają dopiero przy wyświetlaniu.
Wektor jest rysowany od nowa w każdej skali: logo w SVG jest ostre i przy 32, i przy 2000 pikselach, a plik zajmuje kilka kilobajtów, bo to tekst. Zdjęcie z aparatu zapisuj rastrowo, bo krzywe nie opiszą milionów nieregularnych plamek koloru. Logo, ikony i schematy trzymaj wektorowo i rasteryzuj dopiero do formatu docelowego, w dokładnym rozmiarze wyświetlania.
Wymiary, rozdzielczość i głębia koloru
Wymiary w pikselach i rozdzielczość druku to dwie różne rzeczy: obraz 1920 na 1080 ma 2 073 600 pikseli niezależnie od tego, czy w metadanych wpisano 72, czy 300 ppi. Wartość ppi mówi tylko, jak duży ma być wydruk. Zdjęcie drukowane w szerokości 10 cm przy 300 ppi wymaga około 1181 pikseli szerokości.
Głębia koloru mówi, ile bitów opisuje piksel: przy 24 bitach na piksel (3 bajty) rozmiar nieskompresowanej mapy liczy się wprost:
szerokosc * wysokosc * bajty na piksel
1920 * 1080 * 3 = 6 220 800 bajtow = ok. 5,9 MiB
Jednostki przeliczysz w konwerterze. Osiem bitów na kanał daje 256 poziomów składowej i 16 777 216 kolorów; kanał alfa dokłada kolejne 8 bitów, razem 32 bity na piksel. Tryby barw: RGB, CMYK i sRGB
RGB jest addytywny, bo składowe są światłem: pełna czerwień, zieleń i niebieski dają biel, brak wszystkich czerń. CMYK jest subtraktywny, bo farba odejmuje światło odbite od papieru, a czarny kanał K istnieje dlatego, że mieszanka trzech barw procesowych daje brudny brąz zamiast czerni.
Część nasyconych barw RGB (jaskrawe zielenie, błękity) nie mieści się w gamucie CMYK, dlatego wydruk bywa bledszy niż podgląd. Pliki na stronę zapisuj w sRGB, bo to domyślne założenie przeglądarek; zdjęcie w Adobe RGB bez konwersji wyświetli się wyprane.
JPEG, PNG, GIF, SVG i WebP
Format
Kompresja
Przezroczystość
Animacja
Typowe użycie
JPEG
stratna
brak
brak
zdjęcia
PNG-24
bezstratna
alfa, 256 poziomów
APNG
zrzuty, grafika z tekstem
PNG-8
bezstratna, paleta 256
binarna
APNG
proste grafiki
GIF
bezstratna (LZW), paleta 256
binarna
tak
proste animacje
SVG
tekst XML
tak
CSS/SMIL
logo, ikony, schematy
WebP
stratna i bezstratna
alfa
tak
zamiennik JPEG/PNG, ok. 25% lżejszy
JPEG koduje w modelu YCbCr i zwykle zapisuje kolor w połowie rozdzielczości jasności (4:2:0). Nowszy AVIF schodzi z wagą jeszcze niżej niż WebP.
Kompresja stratna kontra bezstratna
Kompresja bezstratna odtwarza dane bit w bit: PNG używa Deflate z filtrami predykcyjnymi, GIF korzysta z LZW. Na zdjęciu zbija plik mniej więcej o połowę, podczas gdy JPEG przy jakości 80 potrafi dziesięciokrotnie, bo trwale usuwa szczegóły słabo widoczne dla oka. Przy jakości 40 widać bloki 8 na 8 pikseli i obwódki przy krawędziach.
Artefakty najbardziej widać na ostrych kontrastach: tekście, cienkich liniach, zrzutach ekranu, dlatego takie obrazy zapisuj w PNG. Każdy ponowny zapis JPEG kwantyzuje już zniekształcone dane, więc straty się sumują: edytuj plik źródłowy, a JPEG generuj raz, na końcu.
Waga pliku, czas ładowania i wideo
Zdjęcie 4000 na 3000 pikseli wstawione w miejsce o szerokości 1200 pikseli nie wygląda lepiej, tylko waży więcej. Atrybut width i reguły CSS zmieniają rozmiar wyświetlania, nie wielkość pobieranego pliku: transfer ograniczysz zmniejszeniem wymiarów przed zapisem, atrybutem srcset albo leniwym ładowaniem. Zamiast 2,8 MB wychodzi około 200 KB, co przy łączu 10 Mb/s (około 1,25 MB/s) skraca pobieranie z 2 sekund do 0,2.
W multimediach kontener to pudełko na strumienie: MP4 i MKV mieszczą obraz, dźwięk i napisy, WebM przyjmuje tylko VP8, VP9 i AV1 z dźwiękiem Vorbis lub Opus. Kodek opisuje sposób zakodowania strumienia (H.264, AV1 dla obrazu; AAC, MP3, Opus dla dźwięku), więc plik .mp4 nie odtworzy się, gdy odtwarzacz nie zna kodeka w środku. Rozmiar liczysz wprost z parametrów strumienia:
dzwiek bezstratny (CD):
44 100 probek * 16 bitow * 2 kanaly = 1 411 200 bitow/s -> ok. 10,6 MB / minute
ten sam material w MP3 128 kb/s -> ok. 0,96 MB / minute
wideo 5 Mb/s -> ok. 37,5 MB / minute
Osadzanie obrazów w dokumencie opisuje artykuł o HTML, a zadania z obliczeń graficznych znajdziesz w arkuszach INF.03.