Grafický formát PNG (Portable Network Graphics)


Formát PNG ("ping") vznikol v polovici roku 1997 ako patentovo nechránená alternatíva k formátu GIF. Používa sa pre bezstratovú kompresiu a zobrazovanie obrázkov hlavne na World Wide Webe. Vznikol pod záštitou WWW konzorcia (World Wide Web Consorcium -W3C).

Vlastnosti GIF formátu ktoré ponúka aj formát PNG:
Dôležité vlastnosti formátu PNG, ktoré GIF neponúka: PNG sa ďalej vyznačuje:

Kompresia

Formát PNG používa kompresný algoritmus deflate/inflate s posuvným oknom (sliding window) veľkým 32 768 bytov. Deflate kompresia je modifikáciou kompresie LZ77 používaná v kompresných programoch zip, pkzip a iných. Deflate kompresia je 100% bezstratová. Dátový tok skomprimovaný metódou deflate je uložený v "zlib" formáte. Pre porovnanie efektívnosti kompresie deflate a LZW, použitého vo formáte GIF, som urobil malý test. Komprimované boli rôzne vzorky obrázkov veľkosti 80x80. Výsledky testu sú zobrazené na obrázku. Všimnite si, že GIF efektívne komprimuje iba obrázky, kde sa opakujú vodorovné vzory.

gif1 gif2 gif3 gif4 gif5 gif6
150 bytes 335 bytes 515 bytes 167 bytes 168 bytes 254 bytes
png1 png2 png3 png4 png5 png6
117 bytes 119 bytes 142 bytes 115 bytes 115 bytes 239 bytes

graf_vysledkov


Filtre

PNG dovoľuje obrazové dáta pred samotnou kompresiou tzv. prefiltrovať. Vhodnou voľbou filtra môžeme výrazne zvýšiť kompresný pomer. Samotné filtrovanie neredukuje veľkosť dát a je zásadne bezstratové! Hlavnou úlohou filtrov je predspracovať obrazové dáta pred samotnou kompresiou za účelom dosiahnutia optimálnej kompresie. Filtre sa používajú hlavne pri kompresii truecolor a grayscale obrázkov a menej často pri obrázkoch s indexovanou paletou farieb.

Typy filtrov:

None
Táto voľba znamená, že obrazové dáta budú komprimované bez použitia filtrov. Odporúča sa pre obrázky s indexovanými farbami.
Sub
Ukladáme rozdiel hodnôt s pixlom naľavo. Vhodné pre obraz s rovnakými vodorovnými vzormi a prechodmi.
Up
Ukladáme rozdiel hodnôt s horným pixlom. Vhodné pre zvislé vzory.
Average
Ukladáme priemernú hodnotu pixla s jeho susedom naľavo a hore. Vhodné pre obraz so šumom nízkej úrovne.
Paeth
Ukladá pixel na základe výpočtu lineárnej funkcie s hodnôt susedných pixelov naľavo, hore a vľavo hore.

Nasledujúca tabuľka demonštruje vplyv použitia filtrov pri kompresii a ich vplyv na výslednú veľkosť súboru. Testované boli súbory papagaje 615x407 , linda 400x481 a png_f 330x48 . Na kompresiu súborov do formátu *.PNG bol požitý program Ulead SmartSaver Pro 1.0.

Typ filtra: 
None
Sub
Up
Average
Paeth
All
Komentár
papagaje
568 181
642 092
361 268
425 486
310 914
423 857
335 580
419 641
316 510
407 282
316 178
403 344
 true color
linda
119 175
134 855
96 511
109 967
93 741
115 448
98 122
114 640
89 101
105 385
89 328
105 010
grayscal
(256 odtieňov šedi)
png_format
4 458
5 658
5 426
6 827
5 614
7 271
6 520
7 720
5 705
7 266
6 059
7 112
 indexed (64 farieb)

Všetky veľkosti súborov po kompresii do formátu PNG sú uvedené v bytoch. Veľkosti v druhom riadku odpovedajú kompresii s prekladaným riadkovaním (Interlace). Nebol ukladaný Alfa kanál. Filter pod označením All je adaptívny spôsob výberu vhodného filtra.V tomto móde sa vyberie najvhodnejší typ filtra (Sub,Up,Average alebo Paeth) pre daný typ obrázku a ten sa aplikuje.

Výber vhodného filtru sa rozhodne neoplatí podceňovať. Nevhodne zvolený filter može znížiť efektivitu kompresie. Snažte sa používať programy ktoré umožňujú voľbu typu filtru (Photoshop 5,Ulead SmartSaver,...). Nie všetky túto voľbu umožňujú (Paint Shop Pro 5...).

Aký filter teda zvoliť?

Alfa kanál

Alfa kanál (maska) je najlepší spôsob ako reprezentovať informáciu o premenlivej transparentnosti. Môže byť použitý pri true color a grayscale obrázkoch. Každému pixelu v obrázku môže byť priradená úroveň priehľadnosti voči podkladu. Hodnota Alfa rovná nule znamená úplnú priehľadnosť a hodnota Alfa 2^bitová hĺba-1 reprezentuje úplnú nepriehľadnosť. Hodnoty nachádzajúce sa medzi týmito dvoma hranicami určujú ako intenzívne bude podklad cez obrázok "presvitať". U obrázkov s indexovanou paletou farieb môže byť každej farbe s palety priradená hodnota Alfa, nieje však možné uložiť celý Alfa kanál. Vďaka premenlivej priehľadnosti môžeme vytvárať efekty, ktoré boli doteraz nedostupné a budú vyzerať dobre na rôznych podkladoch. Premenlivú priehľadnosť môžeme veľmi dobre využiť pri grafike obsahujúcu rôzne tiene (drop-shadows), gradientné prechody farieb... Obrázky budú vyzerať pekne na rôznych podkladoch a nebudú trpieť zubatými okrajmi ako pri formáte GIF, kde môže byť úplne priehľadná iba jedna farba. Nasledujúci obrázok demonštruje použitie Alfa kanálu vo formáte PNG. Cez obrázok by mala presvitať zelená farba ako na tomto obrázku (iba ak váš browser podporuje alfa kanál pri PNG-čku). Alfa kanál obrázku si môžete pozrieť napríklad vo Photoshope.

alfa_test

Interlacing (Prekladanie)

Prekladané (progresívne) zobrazenie je výhodné pre komunikačné linky, keď sa obrázok zobrazuje postupne s narastajúcimi detailmi. V PNG je použitá prekladacia metóda Adam7, ktorá je nazvaná podľa svojho autora: Adam M.Costello. Prekladanie v metóde Adam7 pozostáva zo 7 prechodov cez obrázok. Prechod v ktorom je daný pixel prenesený je definovaný rozmiestnením pixelov v matici 8x8 v obrázku.

1 6 4 6 2 6 4 6
7 7 7 7 7 7 7 7
5 6 5 6 5 6 5 6
7 7 7 7 7 7 7 7
3 6 4 6 3 6 4 6
7 7 7 7 7 7 7 7
5 6 5 6 5 6 5 6
7 7 7 7 7 7 7 7

Napríklad druhý prechod bude obsahovať pixle 4,12,20... v riadkoch 0,8,16... (ľavý horný roh má index 0,0). Prvý prechod bude obsahovať 1/64 dát, druhý 1/32 a ďalej 1/16, 1/8, 1/4, 1/2 a zbytok. Náhľad obrázka vo formáte PNG s prekladaním je 8 x rýchlejší ako pri formáte GIF. Na prvý náhľad je potrebných iba 1/64 obrazových dát v porovnaní s 1/8 pri GIF-e. Nasledujúci animovaný GIF (autor: Willem van Schaik) demonštruje dvojdimenzionálnu prekladaciu schému použitú v PNG a priamkovú prekladaciu schému použitú v GIF-e.

adam7

Pokiaľ uložíme obrázok s prekladaním, jeho veľkosť vzrastie v porovnaní s obrázkom bez prekladania (pozri tabuľku).


Gamma korekcia

PNG umožňuje uchovať informáciu o gamma nastavení. Gamma korekcia predstavuje spôsob korekcie rozdielov v tom ako počítače (hlavne počítačový monitor) interpretujú hodnoty farieb. Napríklad obrázky vytvorené na platforme Macintosh pri zobrazení na PC vyzerajú veľmi tmavo a naopak obrázky vytvorené na PC vyzerajú veľmi svetlo na Macintoshi. Hodnoty gamma sú rôzne pre PC (asi 2,2) a Macintosh (asi 1,8). PNG čiastočne odstraňuje tento problém pomocou uloženia gamma informácie o zariadení na ktorom bol obrázok vytvorený. Pri zobrazení PNG obrázku sa nastaví vhodná gamma hodnota.


Výhody formátu PNG

Nevýhody formátu PNG

Informačné zdroje:

http://www.libpng.org/pub/png - všetko o formáte PNG
ftp.uu.net/graphics/png - zdroj slušných informácií o PNG
AlphaMix - užitočný programík ak sa budete hrať s Alfa kanálom a priehľadnosťami.


[hlavná strana]

Dušan SOVIČ