Komprese obrázků
Jelikož rastrový formát obrázku v sobě nese obrovské množství informaci, jsou obrázky veliké. Proto vznikly různé kompresní metody, kterými se velikost obrázku sníží, nejlépe tak aby si lidské oko nevšimlo změny kvality obrázku. Kompresní metody dělíme na:
- bezztrátovou kompresi - neztratí se z obrázku žádná informace a lze jej tedy vrátit do původního formátu.
- ztrátovou kompresi - z obrázku se mimo jiné vyhodí zbytečné informace, jejichž absenci na obrázku nepoznáme.
GIF
Svého času nejrozšířenější formát na internetu byl vytvořen v roce 1987 a v roce 89 pak rozšířen o průhlednost. GIF formát používá indexové barvy což je paleta používaných barev v obrázku, která je přiložena ke každému obrázku. Obrázek se pak skládá pouze z barev definovaných na této paletě.
GIF dále používá prokládání tzv. interlacing. Neukládá obrázek po řádcích od vrchu dolu, ale řádky obrázku ukládá na přeskáčku. Při načítání takto uloženého obrázku pak dochází k postupnému zaostřování. U GIFu se ukládají řádky v tomto pořadí: 8n (0, 8, 16, ...), 8n+4 (4, 12, 20, ...), 4n+2 (2, 6, 10, 14, ...), 2n+1 (1, 3, 5, 7, 9, ...).
GIF využívá i slovníkovou kompresi (LZW - Lepmel-Ziv Welch), která spočívá v nahrazování často se opakujících sekvencí bitů odkazem do slovníku. Tento algoritmus je velmi účinný na velké jednobarevné plochy.
GIF navíc podporuje animace (sled více obrázku za sebou). V animacích však neukládá všechny obrázky sekvence, ale dále pak jen rozdíly o které se obrázky liší od prvního.
PNG
Vznikl jako konkurenční formát ke GIFu a to z důvodu licenční politiky, která zpoplatňovala všemožné používání gifu. PNG formát rozšířil barevnou hloubku, přidal větší škálu šedi a průhlednosti, takže PNG dokáže řešit i částečnou průhlednost. Vylepšil i prokládání (interlacing), které udělal dvojrozměrné.
JPEG
Je ztrátová komprese a to hlavně díky celočíselnému dělení, ke kterému při kompresi dochází. Komprese JPEG formátu zahrnuje tyto kroky:
- Redukce barevné informace RGB -> YIQ nebo YUV (Y=jas a zbytek je informace o barvě)
- Rozdělení do makrobloků
- Dopředná DCT
- Kvantizace, Cik-cak průchod a RLC
- Zakodování Huffmanovým kódem