PNG – dokonalý formát pro přenos obrazových dat

14. října 2002

Jaké jsou možnosti formátu PNG? Ačkoli jste ho mnozí testovali, stálo by jistě za to se na něj podívat podrobněji. Tento formát posouvá laťku kvality zobrazení hodně vysoko. Nabízí řadu vylepšení šité na míru typografickému světu. Při podrobnějším studiu formátu pochopíte princip definování barevnosti, použití ICC profilu a gama korekce.

Praktické použití formátu PNG

Formát PNG (Portable Network Graphics, vyslovuje se též „ping“) slouží k uchování „rastrových“ obrazů, tedy pouze nevektoroých dat, a vznikl jako reakce na licenční problémy při použití formátu GIF, který používá patentem chráněný LZW algoritmus ke komprimaci dat. Formát PNG byl vyvinut konsorciem W3C a jeho použití, narozdíl od GIFu, není zatíženo licenčními poplatky.

Ačkoli je formát PNG primárně určen pro použití na internetu, může mít i mnohem širší uplatnění. Nezávislost formátu na platformě společně s dalšími jeho vlastnostmi ho předurčuje také k používání jako formátu pro výměnu a archivaci dat v režimech pro popis barev v RGB, stupních šedi či indexovaných barvách. Při zpracovávání „rastrových“ obrázků v těchto režimech, a za současné míry podpory v grafických editorech, může být více než rovnocenným soupeřem starého dobrého TIFu. Co se týče komprimace výsledného souboru, je na tom PNG výrazně lépe. V budoucnu je pravděpodobné, že ho v některých vlastnostech předčí JPEG 2000, který se pomocí svých komprimačními metod posunuje směrem k neztrátové kompresi. PNG se stal nativním formátem pro moderní aplikace jako je Macromedia Fireworks, Microsoft Office a další.

Specifikace PNG ve verzi 1.2, respektive od verze 2nd CD ISO/IEC 15948, již v plné míře vyhovuje požadavkům pro věrné zobrazení barev. Přestože se na začátku vývoje uvažovalo o vytvoření široce využitelného formátu, byla jeho architektura redukována na možnosti uložení jedné obrazové scény včetně informací pro maximální přesnost její reprodukce. Všechny uvažované vlastnosti nad tento rámec byly odstraněny nebo použity pro návrhy nových formátů MNG (Multiple-image Network Graphics) a JNG (JPEG Network Graphics), které vychází ze stejné architektury.

Historie formátu

Za úplný začátek můžeme považovat rok 1977, kdy vyvinuli dva Izraelci (Jacob Ziv a Abraham Lempel) neztrátový kompresní algoritmus nazvaný LZ77. Z jeho pozdější verze LZ78 vznikla varianta nazvaná LZW, kterou používá formát GIF. Počátky vývoje formátu PNG začaly koncem roku 1994. Koncem roku 1996 byla hotova PNG specifikace ve verzi 1.0 a koncem roku 1998 verze 1.1. Z dubna 1999 je verze 2nd CD ISO/IEC 15948 a 11. srpna 1999 byla dokončena verze 1.2.

Formát je tvořen několika specifickými částmi. V angličtině je pro ně termín chunk (vyslov čank). V překladu jsem se rozhodl ponechat tento výraz a podle českých pravidel ho skloňuji. V odborné literatuře se tento výraz překládá velmi volně, například v publikaci „Encyklopedie grafických formátů“ (vydatelství Computer Press a.s.) se můžete setkat s výrazem „shluk“.

  • 11. března 1996 (verze 0.96): První vypuštěná verze.
  • 30. prosinec 1998 (verze 1.1.0): Chunk pCAL byl přidán do specifikace. U chunku gIFT bylo rozhodnuto o jeho nezahrnutí v dalších návrzích specifikace. Upravena gama korekce pro každou hodnotu barevného kanálu, využívá skládání jednotlivých gam v procesu zpracování obrazu.
  • 9. února 1999 (verze 1.1.1): Chunk iTXt byl přidán do specifikace.
  • 14. července 1999 (verze 1.2.0): Byl chunk iTXt přesunut ze skupiny chunků stojící v rozšíření formátu do jádra specifikace.

Některé vlastnosti formátu a jejich autoři:

  • delta-filtering pro zvýšení účinnosti komprese (Scott Elliott a Mark Adler),
  • komprese deflate (Tom Lane, skupina „vývojářů“ z Info-ZIP a mnoho dalších),
  • vnitřní kontrola dat – CRCs (Greg Roelofs),
  • gamma korekce (Paul Haeberli),
  • podpora 48 a 64bitového obrazu (Jonathan Shekter),
  • prokládání Adam7 (Adam Costello),
  • a mnoho dalších osobností kolem Thomase Boutella a Toma Lanea.

Vlastnosti a architektura formátu

Společné vlastnosti formátů GIF a PNG

  • Umožňuje uložit barevnost maximálně v 256 barvách. U PNG je však indexovaná barevnost omezena na hodnotách 1, 2, 4 a 8 bitů (tzn. 2, 4, 16 a 256 barev).
  • Progresivní display mod (prokládání): schopnost zobrazit obrázek v několika krocích (obrázek nejprve vypadá jako v nízkém rozlišení a po něm teprve následuje postupné vykreslování detailů).
  • Binární průhlednost: barva obrázku je označena jako transparentní. Umožňuje vytvořit okraje obrázku nepravoúhlého tvaru.
  • Komentáře, anotace, copyright atd.
  • Nezávislost na systému.
  • Efektivní neztrátová komprese. U PNG je založená na algoritmu deflate. Využívá kombinaci LZ77 algoritmu a Huffmanova kódování. Díky možnosti zvolit si některý z mnoha filtrů je účinnost komprese vyšší než u GIFu, který používá pouze LZW.

Animace a ostatní formy víceobrázkového ukládání byly ze specifikace PNG začátkem roku 1995 vyjmuty. Podpora animace obrázků je vyvíjena zvlášť ve formátu MNG, který vychází z architektury formátu PNG. Pokud se rozhodnete využít k animaci formát MNG, určitě oceníte informace o jeho aktuální podpoře.

Zásadní výhody PNG včetně vlastností chybějících u formátu GIF

  • TrueColor: 24 nebo 48 bitů na pixel v RGB režimu.
  • Grayscale: 1, 2, 4, 8 nebo 16 bitů na pixel v šedoškálovém režimu. Obraz v 1-bitové hloubce je popsán pouze hodnotami 0 – černá a 1 – bílá a odpovídá tak režimu „Bitová mapa“.
  • Paleta s alfa průhledností: paleta vytvořena z RGBA kanálů (A – alfa průhlednost).
  • Alfa průhlednost: 8 nebo 16 bitů na pixel je rezervováno pro průhlednost. Alfa kanál tak nabízí široké možnosti, například jemné vyhlazení obrysu obrázku, textu nebo vytvoření vrženého stínu.
  • Věrné zobrazení: přímá podpora gama korekce, gamutu prostoru barev atd.
  • Spolehlivost v detekci poškozených dat načtených do prohlížeče.
  • Rychlejší zobrazení obrazových pixelů v progresivním display módu. Prokládáním lze, narozdíl od čtyř průchodů ve vykreslování GIFu, dosáhnout u PNG se sedmi průchody rychlejšího zobrazení prvního náhledu.

Struktura PNG formátu

Všechny zde jmenované chunky jsou ze specifikace PNG verze 1.2. V PNG souboru musí být přítomny tři resp. čtyři hlavní (povinné) chunky. Chunk PLTE je povinný pro indexovanou barevnost:

  1. Hlavička (IHDR).
  2. Paleta (PLTE).
  3. Obrazová data (IDAT).
  4. Koncový přívěšek (IEND).

Dále je zde 10 pomocných (nepovinných) chunků řazených mezi hlavičku (IHDR) a konec (IEND). Vysvětlení funkce jednotlivých chunků, které ovlivňují barevnost PNG obrázku, naleznete v některém z následujících článků. Prostoru barev se v obecnějších souvislostech věnuje článek Barevnost loga – pohled typografa.

Informace o prostoru barev:

  1. Transparence (tRNS).
  2. Gamma korekce (gAMA).
  3. Barevný rozsah – gamut (cRHM).
  4. sRGB prostor – informace, je použit jako zdrojový profil (sRGB).
  5. ICC profil (iCCP).

Textové informace:

  1. Textová data (tEXt). Použité znaky jsou v kódování ISO/IEC 8859-1 (Latin-1).
  2. Komprese textových dat (zTXt). Slouží pro uložení větších bloků textů. Zdrojové texty jsou kódovány v ISO/IEC 8859-1 (Latin-1).
  3. Mnohojazyčná textová data (iTXt). Použito kódování UTF-8 (Unicode).

Různé:

  1. Barva pozadí (bKGD).
  2. Poměr obrazovkového bodu (pHYs). Za pomocí chunků sCAL a pCAL lze přesně vypočítat poměr bodu obrazovky. Tyto chunky má smysl použít pro reprodukování map, plánů apod.
  3. Informace o bitech (sBIT) podle modelu a bitové hloubky barev.
  4. Paleta barev zpracovaná pomocí histogramu (sPLT).
  5. Histogram (hIST).
  6. Datum naposledy provedené změny v obrázku (tIME).

Volně podporované chunky pro rozšíření specifikace PNG 1.2 (verze 1.2.0):

  1. Ovlivnění pozice obrázku na stránce například pro tisk apod. (oFFs).
  2. Informace o vztahu rozměrů uloženého obrázku k rozměrům skutečné scény a následně i k přesným rozměrům na zařízení pro reprodukování obrázku (pCAL).
  3. Informace o rozměrech skutečné obrazové scény (sCAL).
  4. Grafické rozšíření pro zpětnou kompatibilitu s GIF89a (gIFg).
  5. Informace pro zpětnou kompatibilitu s GIF89a (gIFx).
  6. Popisuje parametry využívané ke generování obrázků popsaných ve fraktálech (fRAc).

Pokud chunk nemá uplatnění, není v souboru zastoupen. Každý chunk pak obsahuje tyto čtyři části:

  1. Délka: Zápis je limitován čtyřmi bajty.
  2. Chunk Type: Kódování je omezeno na znaky malé a velké abecedy v ASCII tabulce (A-Z a a-z nebo 65-90 a 97-122). Nicméně při zpracovávání dat dochází k převodu na binární hodnoty. Zápis je limitován čtyřmi bajty.
  3. Chunk Data: Je použit jen v případě, když data v chunku Type přesáhnou velikost čtyř bajtů.
  4. CRC (Cyclic Redundancy Check): Zápis je limitován čtyřmi bajty. Jeho úkolem je srovnávat data a indikovat, která z nich jsou přenosem poškozena. Pokud jsou poškozena data z nepovinných chunků, měl by být obrázek vykreslen bez jejich použití.

Vybrané vlastnosti chunků

Povinné chunky musí být umístěny přesně v tomto pořadí (chunk PLTE je povinný pro indexovanou barevnost):

Název Zmnožení Pořadí
IHDR Ne Musí být první.
PLTE Ne Umístění před IDAT.
IDAT Ano Obsah musí být souvislý.
IEND Ne Musí být poslední.

Nepovinné chunky jsou volitelné a jejich poloha je omezena hlavními (povinnými) chunky:

Název Zmnožení Pořadí
cHRM Ne Umístění před PLTE a IDAT.
gAMA Ne Umístění před PLTE a IDAT.
iCCP Ne Umístění před PLTE a IDAT.
sBIT Ne Umístění před PLTE a IDAT.
sRGB Ne Umístění před PLTE a IDAT.
bKGD Ne Umístění za PLTE a před IDAT.
hIST Ne Umístění za PLTE a před IDAT.
tRNS Ne Umístění za PLTE a před IDAT.
pHYs Ne Umístění před IDAT.
sPLT Ano Umístění před IDAT.
tIME Ne Není specifikováno.
iTXt Ano Není specifikováno.
tEXt Ano Není specifikováno.
zTXt Ano Není specifikováno.

Chunky pro rozšíření PNG jsou nepovinné a jejich poloha je omezena hlavními (povinnými) chunky:

Název Zmnožení Pořadí
oFFs Ne Umístění před IDAT.
pCAL Ne Umístění před IDAT.
sCAL Ne Umístění před IDAT.
gIFg Ano Není specifikováno.
gIFt Ano Není specifikováno.
gIFx Ano Není specifikováno.
fRAc Ano Není specifikováno.

(s chunkem gIFt se v dalším vývoji specifikace nepočítá)

Standardní klíčová slova pro textové chunky:

Title Krátký (jednořádkový) název nebo titulek k obrazovým datům.
Author Jméno tvůrce (tvůrců) obrazových dat.
Description Popis obrazových dat (délka popisu může být i na více řádků).
Copyright Poznámka k autorským právům.
Creation Time Datum související s vytvořením originálu obrazových dat.
Software Software využitý ke tvorbě obrazových dat.
Disclaimer Zřeknutí se autorských práv.
Warning Upozornění na obsah obrazových dat.
Source Zařízení využité k vytvoření obrazových dat.
Comment Různé komentáře k obrazovým datům.

Na závěr jsem zařadil několik ukázek uložených do některého z nabízených barevných režimů. Použil jsem logo společnosti Apple, na kterém budu v dalších článcích ukazovat postupy pro zachování věrnosti barev. Zobrazení ukázek však závisí na podpoře prohlížečů. Obrázky jsou uloženy v následujícím pořadí:

  • 8bitový šedoškálový barevný režim
  • 24bitový RGB barevný režim
  • režim indexovaných barev
  • 16bitový šedoškálový barevný režim uložený s alfa kanálem
  • 32bitový RGB režim uložený s alfa kanálem

logo Apple s profilem s gamou 2.2 logo Apple s profilem sRGB IEC61966-2.1 991203 logo Apple v indexovaných barvách logo Apple s alfa průhledností a gamou 2.2 logo Apple s alfa průhledností a profilem sRGB

Odkazy a zdroje

Použitá literatura

Další prameny

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *