PNG – dokonalý formát pro přenos obrazových dat
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:
- Hlavička (IHDR).
- Paleta (PLTE).
- Obrazová data (IDAT).
- 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:
- Transparence (tRNS).
- Gamma korekce (gAMA).
- Barevný rozsah – gamut (cRHM).
- sRGB prostor – informace, je použit jako zdrojový profil (sRGB).
- ICC profil (iCCP).
Textové informace:
- Textová data (tEXt). Použité znaky jsou v kódování ISO/IEC 8859-1 (Latin-1).
- 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).
- Mnohojazyčná textová data (iTXt). Použito kódování UTF-8 (Unicode).
Různé:
- Barva pozadí (bKGD).
- 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.
- Informace o bitech (sBIT) podle modelu a bitové hloubky barev.
- Paleta barev zpracovaná pomocí histogramu (sPLT).
- Histogram (hIST).
- Datum naposledy provedené změny v obrázku (tIME).
Volně podporované chunky pro rozšíření specifikace PNG 1.2 (verze 1.2.0):
- Ovlivnění pozice obrázku na stránce například pro tisk apod. (oFFs).
- 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).
- Informace o rozměrech skutečné obrazové scény (sCAL).
- Grafické rozšíření pro zpětnou kompatibilitu s GIF89a (gIFg).
- Informace pro zpětnou kompatibilitu s GIF89a (gIFx).
- 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:
- Délka: Zápis je limitován čtyřmi bajty.
- 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.
- Chunk Data: Je použit jen v případě, když data v chunku Type přesáhnou velikost čtyř bajtů.
- 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
Odkazy a zdroje
Použitá literatura
- PNG Site Map – přehled potřebných informací o formátu PNG
- Portable Network Graphics – kopie většiny stránek výše uvedeného webu
- PNG Specification, Version 1.2 – specifikace PNG s novými chunky na zpracování barevné informace
Další prameny
- Normative reference – mezinárodní standardy po věrné reprodukování obrazu zahrnuté do PNG specifikace 2nd CD ISO/IEC 15948
- Color Management Glosary – základní názvosloví v CMS
- DEFLATE Compressed Data Format Specification version 1.3 – kompresní metoda DEFLATE, odkaz na TXT, PDF nebo PS soubory
- Specification ICC.1:2001-12 – ICC profil verze 4.0.0 ve formátu PDF (2250164 bajtů)
- File Format for ICC 1:1998-9 – dokument ve formátu PDF (815769 bajtů) o použití profilu u běžných formátů
- SuperPNG – volně šiřitelný plugin pro Photoshop (verze pro Windows i MacOS) umožňující rozšířené načítání a ukládání formátu PNG
- JPEG 2000 – možná konkurence formátu PNG?
- Vzhled html stránek – pohled typografa
- Barevnost loga – pohled typografa
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Jak lze snadno upravovat soubory v PDF?
14. září 2023 -
Vstupte do éry umělé inteligence: ASOME Max Studio s AMD Ryzen™ 9 7940HS
14. listopadu 2023
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024