V sobotu 2. listopadu proběhla mohutná oslava naší plnoletosti !!
Multimediaexpo.cz je již 18 let na českém internetu !!

PNG

Z Multimediaexpo.cz

(Rozdíly mezi verzemi)
(+ malé vylepšení)
m (1 revizi)

Verze z 3. 7. 2013, 14:39

PNG obrázek průhledných objektů na bílém pozadí

PNG, anglická zkratka pro: Portable Network Graphics (oficiální výslovnost zkratky je „ping“), je grafický formát určený pro bezeztrátovou kompresi rastrové grafiky. Byl vyvinut jako zdokonalení a náhrada formátu GIF, který byl patentově chráněný (algoritmus LZW84), dnes jsou patenty prošlé. PNG nabízí podporu 24 bitové barevné hloubky, nemá tedy jako GIF omezení na maximální počet 256 barev současně. PNG tedy do jisté míry nahrazuje GIF, nabízí více barev a lepší kompresi (algoritmus Deflate + filtry). Navíc obsahuje osmibitovou průhlednost (tzv. alfa kanál), to znamená, že obrázek může být v různých částech různě průhledný (tzv. RGBA barevný model). Nevýhodou PNG oproti GIF je praktická nedostupnost jednoduché animace, pro kterou sice existují 2 návrhy APNG a MNG, které se ale zatím neprosadily. PNG se stejně jako formáty GIF a JPEG používá na Internetu.

Formát PNG nepodporuje systém kladení barev CMYK.

Podle MIME má PNG přidělen typ image/png.

Obsah

Historie a vývoj

Impulz pro vytvoření formátu PNG přišel v roce 1994 kdy po dohodě firem Unisys a CompuServe došlo k licenčnímu zpoplatnění za použití formátu GIF. Po následných úpravách licence, se začala vztahovat nejen na velké firmy, ale i na programátory vyvíjející freeware, shareware a také programy šířené pod volnou licencí (GPL). Tato politika vyvolala velkou vlnu odporu, která vyvrcholila akcí „Bun All GIFs“, které se zúčastnili jak velké softwarové firmy tak samotní programátoři na svých soukromých stránkách.

16. ledna 1995 firma CompuServe zahájila vývoj nového grafického formátu GIF, který měl nahradit stávající GIF formát. Nový formát pod názvem GIF24 neměl být zatížený patenty (změna komprimačního algoritmu), maximální počet barev měl být zvýšen z 256 na 16 milionů.

Současně s vývojem GIF24 se začal vyvíjet naprosto nový formát, který neměl být vázán žádným patentem ani vztahem k žádné firmě a předčil by tehdejší grafické formáty (především GIF, JPEG). Původní název zněl PBF (Portable Bitmap Format), ale posléze byl změněn na PNG (Portable Network Graphics).

Technické detaily

Hlavička souboru

Hlavička souboru PNG má délku 8 bytů. Tyto byty mají vždy stejné hodnoty, jejich hexadecimální vyjádření vypadá následovně:

89 50 4e 47 0d 0a 1a 0a

Byte Význam bytu
89 Jedná se o byte s nejvýše nastaveným bitem.Detekce podpory 8 bitového přenosu dat.
50 4E 47 V ASCII řetězec „PNG“, slouží k identifikaci souborového formátu.
0D 0A V DOSu označující konec řádku (CRLF). Detekce náhrady za jinou sevenci.
1A Byte zastavující výpis souboru v DOSu.
0A V UNIXu detekce konce přenosu (LF).

Chunk uvnitř souboru

Po hlavičce přichází série chunků, z nichž každý zprostředkovává jistou informaci o obrazu. Chunky deklarují sebe jako „rozhodující“ nebo „pomocné“, pokud se program setká s chunkem kterému nerozumí, může ho bezpečně ignorovat. Struktura tohoto chunku je založena tak, aby dovolovala slučitelnost PNG formátů se staršími verzemi.

Každý chunk má hlavičku specifické velikosti a typu. Pak ihned následují aktuální data, posléze probíhá kontrolní součet dat. Chunky jsou dány čtyřmi znaky v ASCII s vlastností case sensitiv. Rozdílnost znaků (pátý bit je číselná hodnota) poskytuje možnost dešifrovat informaci o povaze chunku v případě jeho nerozeznatelnosti.

První znak signalizuje jestli je chunk rozhodující nebo ne. Pokud je první znak velké písmeno, chunk je rozhodující; pokud ne, jedná se o pomocný chunk. Rozhodující chunk obsahuje informaci, která je nezbytná ke čtení souboru. Pokud dekodér nerozezná rozhodující chunk, čtení souboru se buď přeruší nebo je uživatel informován vhodným varováním.

Druhý znak informuje jestli je chunk „veřejný“ (jedná se o jednoúčelový chunk) nebo „privátní“ (není standardizován). Velké písmeno značí veřejný a malé privátní chunk. To zajistí, že veřejný a privátní znak chunku se nemohou nikdy vzájemně střetnout.

Třetí znak musí být velké písmeno přizpůsobené podle PNG specifikace. Rezervovaný pro budoucí expanzi. V případě malého písmene na pozici třetího znaku by měl dekodér jednat s tímto chukem jako s jakýmkoliv jiným neznámým.

Čtvrtý znak signalizuje jestli je chunk bezbečný ke kopírování pomocí editorů, které ho nerozeznají. Je-li čtvrtý znak malé písmeno, chunk může být bezpečně kopírovaný bez ohledu na rozsah modifikací do souboru. Je-li čtvrtý znak velké písmeno, může být kopírovaný jen jestli se modifikace nedotýkají žádných kritických chanků.

Porovnání s jinými formáty

Porovnání JPEG a PNG: všimněte si roztřepených okrajů v JPEG oproti čistým okrajům PNG

Porovnání s JPEG

JPEG může vytvářet menší soubory než PNG pro fotografie a fotorealistické vizualizace, protože JPEG používá ztrátovou kompresi speciálně navrženou pro fotografii. PNG má ve stejné kvalitě až 5-10x větší soubory.

PNG je naopak lepší než JPEG pro obrázky obsahující text, čárovou grafiku, čisté barevné plochy a ostré rozhraní barev. JPG nepodporuje průsvitnost (indexové barvy, alfa-kanál). Tam kde se vyskytují jak fotografické, tak grafické prvky, musíte se rozhodnout mezi čistým zobrazováním bezeztrátového PNG, nebo malým souborem ztrátového JPG.

JPEG je také špatným rozhodnutím pro archivování obrázků pro další zpracování a fotomontáž. To dělá PNG vhodnějším pro ukládání dočasných fotografií vyžadujících fotomontáž. Teprve finální fotografie určená k distribuci může být uložena jako JPEG ze ztrátou detailů pouze pro jednu generaci. PNG může obsahovat metadata, avšak nejsou nijak striktně definována, jako u JPEGu formát Exif obsahující informace o digitální kameře, čase, expozici, atd. které jsou potřebné pro profesionální fotografy (jak umožňuje např. TIFF).

JPEG je historicky předurčený formát pro distribuci velkých fotografií na internetu, pro které je lepší, než předtím používaný GIF. GIF je ovšem postupně vytlačován formátem PNG, protože má volnou licenci, umožňuje 24bit barvu a 8bit průsvitnost (alfa-kanál).

Externí odkazy