Přenosná síťová grafika - Portable Network Graphics

Přenosná síťová grafika

Ukázka transparentnosti PNG 1.png

Obraz PNG s 8bitovým kanálem průhlednosti, překrytý na kostkované pozadí, obvykle používaný v grafickém softwaru k označení průhlednosti
Přípona názvu souboru
.png
Typ internetového média
obrázek/png
Zadejte kód PNGf
PNG
Jednotný identifikátor typu (UTI) public.png
Konformace UTI public.image
Kouzelné číslo 89 50 4e 47 0d 0a 1a 0a
Vyvinuto PNG Development Group (darováno W3C )
První vydání 1. října 1996 ; Před 25 lety ( 1996-10-01 )
Typ formátu Bezztrátový formát bitmapového obrázku
Rozšířeno na APNG , JNG a MNG
Standard ISO / IEC 15948 , IETF RFC 2083
Otevřený formát ? Ano

Portable Network Graphics ( PNG , oficiálně prohlásil / p ɪ ŋ / PING , někdy vyslovováno / ˌ p I ɛ n I / PEE -en- JEE ) je rastrová grafický soubor formátu , který podporuje bezztrátové . PNG byl vyvinut jako vylepšená, nepatentovaná náhrada za Graphics Interchange Format (GIF).

PNG podporuje obrázky založené na paletách (s paletami 24bitových barev RGB nebo 32bitových barev RGBA ), obrázky ve stupních šedi (s nebo bez alfa kanálu pro průhlednost) a plnobarevné neparetové obrázky RGB nebo RGBA. Pracovní skupina PNG navrhla formát pro přenos obrázků na internet , nikoli pro tiskovou grafiku v profesionální kvalitě; proto nejsou podporovány barevné prostory jiné než RGB, jako je CMYK . Soubor PNG obsahuje jeden obrázek v rozšiřitelné struktuře bloků , kódující základní pixely a další informace, jako jsou textové komentáře a kontroly integrity zdokumentované v RFC 2083.

Soubory PNG používají příponu souboru PNG nebo jim pngje přiřazen typ média MIMEimage/png . PNG byl publikován jako informační RFC 2083 v březnu 1997 a jako norma ISO/IEC 15948 v roce 2004.

Historie a vývoj

Motivací pro vytvoření formátu PNG bylo poznání, že dne 28. prosince 1994, lzw (LZW) komprese dat algoritmus použitý v Graphics Interchange Format formátu (GIF) byl patentován od Unisys . Patent požadoval, aby veškerý software podporující GIF platil licenční poplatky, což vedlo k přívalu kritiky ze strany uživatelů Usenet . Jedním z nich byl Thomas Boutell, který 4. ledna 1995 zveřejnil na diskusní skupině Usenet „comp.graphics“ předběžné diskusní vlákno, ve kterém navrhl plán bezplatné alternativy k GIF. Ostatní uživatelé v tomto vlákně předložili mnoho návrhů, které by později byly součástí konečného formátu souboru. Oliver Fromme, autor populárního prohlížeče JPEG QPEG , navrhl název PING, nakonec se stal PNG, rekurzivní zkratka znamenající PING není GIF , a také .png rozšíření . Další návrhy, které byly později implementovány, zahrnovaly kompresní algoritmus Deflate a podporu 24bitových barev , jejich nedostatek v GIF také motivoval tým k vytvoření formátu souboru. Tato skupina by se stala známou jako PNG Development Group a jak se diskuse rychle rozšířila, později použila seznam adres přidružený k fóru CompuServe .

Úplná specifikace PNG byla vydána na základě schválení W3C dne 1. října 1996 a později jako RFC 2083 dne 15. ledna 1997. Specifikace byla revidována 31. prosince 1998 jako verze 1.1, která řešila technické problémy pro gama a korekci barev . Verze 1.2, vydaná 11. srpna 1999, přidala iTXtčást jako jedinou změnu specifikace a přeformátovaná verze 1.2 byla vydána jako druhé vydání standardu W3C dne 10. listopadu 2003 a jako mezinárodní norma ( ISO/IEC 15948: 2004 ) dne 3. března 2004.

Ačkoli GIF umožňuje animaci , bylo rozhodnuto, že PNG by měl být formát jednoho obrázku. V roce 2001 publikovali vývojáři PNG formát Multiple-image Network Graphics (MNG) s podporou animace. MNG dosáhla mírné podpory aplikací, ale ne dostatečně mezi běžnými webovými prohlížeči a bez využití mezi návrháři nebo vydavateli webových stránek. V roce 2008 vydali někteří vývojáři Mozilly formát Animated Portable Network Graphics (APNG) s podobnými cíli. APNG je formát, který je nativně podporován webovými prohlížeči založenými na Gecko a Presto a také se běžně používá pro miniatury v systému PlayStation Portable od společnosti Sony (s normální příponou souboru PNG). V roce 2017 přijaly prohlížeče založené na Chromu podporu APNG . V lednu 2020 se Microsoft Edge stal založeným na Chromu , čímž zdědil podporu pro APNG . Díky tomu nyní všechny hlavní prohlížeče podporují APNG.

Pracovní skupina PNG

Původní specifikaci PNG vytvořila ad hoc skupina odborníků a nadšenců do počítačové grafiky . Diskuze a rozhodnutí o formátu byly vedeny e -mailem. Původní autoři uvedení v RFC 2083 jsou:

Formát souboru

Obrázek PNG PNG-Gradient.pngzobrazený pomocí aplikace hex editoru pro Ubuntu .

Záhlaví souboru

Soubor PNG začíná 8bajtovým podpisem (viz obrázek hex editoru vpravo):

Hodnoty ( hex ) Účel
89 Má vysoký bit nastavený na detekci přenosových systémů, které nepodporují 8bitová data, a na snížení pravděpodobnosti, že textový soubor bude mylně interpretován jako PNG nebo naopak.
50 4E 47 V ASCII jsou písmena PNG , což umožňuje osobě snadno identifikovat formát, pokud je zobrazen v textovém editoru.
0D 0A DOS stylová horlivá linie konec (CRLF) pro detekci DOS Unix linie končící konverzi dat.
1A Bajt, který zastaví zobrazení souboru v systému DOS, když byl použit typ příkazu - znak konce souboru .
0A Konec řádku ve stylu Unixu (LF) pro detekci převodu zakončení řádku Unix-DOS.

"Chunks" v souboru

Za záhlavím přichází řada bloků , z nichž každá přenáší určité informace o obrázku. Kousky se prohlašují za kritické nebo pomocné a program, který narazí na pomocný kus, kterému nerozumí, ho může bezpečně ignorovat. Tato struktura kus založený na akumulační vrstva, podobný v pojetí k formátu kontejneru nebo na Amiga ' s MFF , je navržen tak, aby ve formátu PNG, které mají být rozšířena při zachování kompatibility se staršími verzemi, poskytuje dopředu kompatibilitu a tutéž strukturu souborů ( s různými podpisy a bloky) se používá v přidružených formátech MNG , JNG a APNG .

Blok se skládá ze čtyř částí: délka (4 bajty, big-endian ), typ/název bloku (4 bajty), data bloku (délka bajtů) a CRC (kód cyklické redundance/kontrolní součet; 4 bajty). CRC je CRC-32 síťového bajtu, který se počítá podle typu bloku a dat bloku, ale ne podle délky.

Délka Typ bloku Data bloku CRC
4 byty 4 byty Délka bajtů 4 byty

Typy paměti bloku jsou uvedeny čtyři-dopis malá a velká písmena typu ASCII / jméno; srovnej FourCC . Případ různých písmen v názvu (bit 5 číselné hodnoty znaku) je bitové pole, které poskytuje dekodéru některé informace o povaze bloků, které nerozpoznává.

První písmeno označuje, zda je kus kritický nebo ne. Pokud je první písmeno velká, je klíčový kus; pokud ne, kus je pomocný. Kritické bloky obsahují informace, které jsou nutné ke čtení souboru. Pokud dekodér narazí na kritický blok, který nerozpozná, musí přerušit čtení souboru nebo poskytnout uživateli příslušné varování.

Druhé písmeno označuje, zda je kus „veřejný“ (buď ve specifikaci, nebo v registru účelových veřejných bloků) nebo „soukromý“ (není standardizován). Velká písmena jsou veřejná a malá soukromá. Tím je zajištěno, že názvy veřejných a soukromých bloků si nikdy nebudou navzájem odporovat (i když dva názvy soukromých bloků mohou být v konfliktu).

Třetí písmeno musí být velká, aby odpovídalo specifikaci PNG. Je vyhrazeno pro budoucí rozšíření. Dekodéry by měly s kusem zacházet s malým třetím písmenem stejně jako s jakýmkoli jiným nerozpoznaným kusem.

Případ čtvrtého písmene označuje, zda je kus bezpečně zkopírován editory, kteří jej nerozpoznávají. Pokud jsou malá písmena, kus lze bezpečně zkopírovat bez ohledu na rozsah úprav souboru. Je -li velká, lze ji zkopírovat pouze v případě, že se úpravy nedotkly žádných kritických bloků.

Kritické kusy

Dekodér musí být schopen interpretovat kritické bloky pro čtení a vykreslování souboru PNG.

  • IHDRmusí být první kus; obsahuje (v tomto pořadí) šířku obrázku (4 bajty); výška (4 bajty); bitová hloubka (1 byte, hodnoty 1, 2, 4, 8 nebo 16); barevný typ (1 byte, hodnoty 0, 2, 3, 4 nebo 6); metoda komprese (1 byte, hodnota 0); metoda filtrování (1 byte, hodnota 0); a prokládaná metoda (1 bajt, hodnoty 0 "bez prokládání" nebo 1 " Adam7 prokládání") (celkem 13 datových bytů). Jak uvádí konsorcium World Wide Web , bitová hloubka je definována jako „počet bitů na vzorek nebo na index palety (nikoli na pixel)“.
  • PLTEobsahuje paletu : seznam barev.
  • IDATobsahuje obrázek, který může být rozdělen mezi více kusů IDAT. Takové rozdělení mírně zvyšuje velikost souborů, ale umožňuje generovat PNG streamovacím způsobem. Blok IDAT obsahuje skutečná obrazová data, která jsou výstupním proudem kompresního algoritmu.
  • IENDoznačí konec obrázku; datové pole bloku IEND má 0 bytů/je prázdné.

Blok PLTEje nezbytný pro barvu typu 3 ( indexovaná barva ). Je volitelný pro typy barev 2 a 6 (truecolor a truecolor s alfa) a nesmí se objevit pro typy barev 0 a 4 (stupně šedi a stupně šedi s alfa).

Pomocné kusy

Mezi další atributy obrázku, které lze uložit do souborů PNG, patří hodnoty gama , barva pozadí a informace o textových metadatech . PNG také podporuje správu barev prostřednictvím začlenění profilů barevného prostoru ICC .

  • bKGDudává výchozí barvu pozadí. Je určen k použití tam, kde není k dispozici lepší volba, například v samostatných prohlížečích obrázků (ale ne ve webových prohlížečích; další podrobnosti viz níže).
  • cHRMudává souřadnice chromatičnosti primárních zobrazení a bílého bodu .
  • dSIG slouží k ukládání digitálních podpisů.
  • eXIfukládá metadata Exif .
  • gAMAspecifikuje gama . Část gAMA obsahuje pouze 4 bajty a její hodnota představuje hodnotu gama vynásobenou 100 000; například hodnota gama 1/3,4 se vypočítá na 29411,7647059 ((1/3,4)*(100 000)) a pro úložiště se převede na celé číslo (29412).
  • hIST lze uložit histogram nebo celkové množství každé barvy do obrázku.
  • iCCPje barevný profil ICC .
  • iTXtobsahuje klíčové slovo a text UTF-8 s kódováním pro možnou kompresi a překlady označené jazykovou značkou . XMP (XMP) používá tento blok s klíčovým slovem ‚XML: com.adobe.xmp‘
  • pHYsdrží zamýšlenou velikost pixelu (nebo poměr stran pixelu); pHYs obsahuje „pixely na jednotku, osa X“ (4 bajty), „pixely na jednotku, osa Y“ (4 bajty) a „specifikátor jednotky“ (1 bajt) pro celkem 9 bajtů.
  • sBIT(významné bity) udává přesnost barev zdrojových dat; tento kus obsahuje celkem 1 až 13 bajtů.
  • sPLT navrhuje paletu použít, pokud není k dispozici celá řada barev.
  • sRGBoznačuje, že je použit standardní barevný prostor sRGB ; kus sRGB obsahuje pouze 1 bajt, který se používá pro „záměr vykreslování“ (pro záměr vykreslování jsou definovány 4 hodnoty - 0, 1, 2 a 3 -).
  • sTERkus stereofonního obrazu pro stereoskopické obrázky.
  • tEXtmůže ukládat text, který může být reprezentován v ISO/IEC 8859-1 , s jedním párem klíč-hodnota pro každý blok. Klíč musí mít 1 až 79 znaků. Separator je nulová postava. „Hodnota“ může mít libovolnou délku, včetně nuly až po maximální přípustnou velikost bloku minus délku klíčového slova a oddělovače. „Klíč“ ani „hodnota“ nesmí obsahovat znak null. Rovněž nejsou povoleny úvodní nebo koncové mezery.
  • tIME ukládá čas, kdy byl obrázek naposledy změněn.
  • tRNSobsahuje informace o transparentnosti. U indexovaných obrázků ukládá hodnoty alfa kanálu pro jednu nebo více položek palety. U obrázků s pravými barvami a ve stupních šedi ukládá hodnotu jednoho pixelu, kterou je třeba považovat za plně transparentní.
  • zTXtobsahuje komprimovaný text (a značku metody komprese) se stejnými limity jako tEXt.

Malé první písmeno v těchto blocích označuje, že nejsou pro specifikaci PNG potřeba. Malá písmena posledního písmena v některých blocích značí, že je lze bezpečně kopírovat, i když jim příslušná aplikace nerozumí.

Formát pixelu

Barevný typ PNG
Barevný typ Kanály Bity na kanál
1 2 4 8 16
Indexováno 1 1 2 4 8
Stupně šedi 1 1 2 4 8 16
Stupně šedi a alfa 2 16 32
Pravdivá barva 3 24 48
Truecolor a alfa 4 32 64

Pixely v obrázcích PNG jsou čísla, která mohou být buď indexy vzorových dat v paletě, nebo samotnými ukázkovými daty. Paleta je samostatná tabulka obsažená v bloku PLTE. Ukázková data pro jeden pixel se skládají z n -tice mezi jedním a čtyřmi čísly. Ať už data v pixelech představují indexy palet nebo explicitní ukázkové hodnoty, čísla se označují jako kanály a každé číslo v obrázku je kódováno ve stejném formátu.

Povolené formáty kódují každé číslo jako celočíselnou hodnotu bez znaménka pomocí pevného počtu bitů, ve specifikaci PNG se označuje jako bitová hloubka . Všimněte si, že to není totéž jako barevná hloubka , která se běžně používá k označení celkového počtu bitů v každém pixelu, nikoli v každém kanálu. Povolené bitové hloubky jsou shrnuty v tabulce spolu s celkovým počtem bitů použitých pro každý pixel.

Počet kanálů závisí na tom, zda je obrázek ve stupních šedi nebo barevný a zda má alfa kanál . PNG umožňuje následující kombinace kanálů, nazývané barevný typ .

0 (000 2 ) ve stupních šedi
2 (010 2 ) červená, zelená a modrá: rgb/truecolor
3 (011 2 ) indexováno: kanál obsahující indexy do palety barev
4 (100 2 ) stupně šedi a alfa: úroveň neprůhlednosti pro každý pixel
6 (110 2 ) červená, zelená, modrá a alfa

Typ barvy je uveden jako 8bitová hodnota, avšak jsou použity pouze nízké 3 bity a dokonce i tehdy je povoleno pouze pět výše uvedených kombinací. Dokud je typ barvy platný, lze jej považovat za bitové pole, jak je shrnuto v sousední tabulce:

Barevné typy PNG
Barevný
typ
název Binární Masky
  A C P
0 Stupně šedi 0 0 0 0  
2 Pravdivá barva 0 0 1 0 barva
3 Indexováno 0 0 1 1 barva, paleta
4 Stupně šedi a alfa 0 1 0 0 alfa
6 Truecolor a alfa 0 1 1 0 alfa, barva
  • bitová hodnota 1: obrazová data ukládají indexy palet. Toto platí pouze v kombinaci s bitovou hodnotou 2;
  • bitová hodnota 2: vzorky obrazu obsahují tři kanály trichromatických barev kódujících data , jinak vzorky obrazu obsahují jeden kanál relativní jasu kódujícího data ,
  • bitová hodnota 4: vzorky obrazu také obsahují alfa kanál vyjádřený jako lineární měřítko opacity pixelu. Toto není platné v kombinaci s bitovou hodnotou 1.

U indexovaných barevných obrazů paleta vždy ukládá trichromatické barvy v hloubce 8 bitů na kanál (24 bitů na vstup palety). Kromě toho může být zahrnut volitelný seznam 8bitových hodnot alfa pro položky palety; pokud nejsou zahrnuty nebo pokud jsou kratší než paleta, zbývající položky palety se považují za neprůhledné. Paleta nesmí obsahovat více položek, než umožňuje bitová hloubka obrázku, ale může jich mít méně (například pokud obrázek s 8bitovými pixely používá pouze 90 barev, nepotřebuje položky palety pro všech 256 barev). Paleta musí obsahovat položky pro všechny hodnoty pixelů přítomné v obrázku.

Standard umožňuje, aby indexované barevné PNG měly 1, 2, 4 nebo 8 bitů na pixel; obrázky ve stupních šedi bez alfa kanálu mohou mít 1, 2, 4, 8 nebo 16 bitů na pixel. Všechno ostatní používá bitovou hloubku na kanál 8 nebo 16. Kombinace, které to umožňuje, jsou uvedeny v tabulce výše. Standard vyžaduje, aby dekodéry mohly číst všechny podporované barevné formáty, ale mnoho editorů obrázků z nich dokáže vytvořit jen malou podmnožinu.

Průhlednost obrázku

PNG nabízí řadu možností průhlednosti. U obrázků v pravých barvách a ve stupních šedi lze buď hodnotu jednoho pixelu deklarovat jako průhlednou, nebo přidat alfa kanál (což umožňuje použít jakékoli procento částečné průhlednosti). U paletovaných obrázků lze do položek palety přidat hodnoty alfa. Počet těchto uložených hodnot může být menší než celkový počet záznamů palety, v takovém případě jsou zbývající položky považovány za zcela neprůhledné.

Skenování hodnot pixelů pro binární průhlednost by mělo být provedeno před jakoukoli redukcí barev, aby se zabránilo neúmyslnému zprůhlednění pixelů. To je s největší pravděpodobností problémem pro systémy, které mohou dekódovat obrazy 16 bitů na kanál (jak je požadováno pro soulad se specifikací), ale pouze výstup na 8 bitů na kanál (norma pro všechny systémy kromě nejvyšších) .

Úložiště alfa může být „přidružené“ („ premultiplied “) nebo „asociované“ , ale PNG standardizované na „unassociated“ („non premultiplied“) alfa, což znamená, že snímky nejsou alfa kódovány ; emise reprezentované v RGB nejsou emise na úrovni pixelů. To znamená, že nadměrná operace znásobí emise RGB alfa a nemůže správně představovat emise a okluzi.

Komprese

Příklad s několika typy obsahu obrázku
Reprezentace bitových nákladů na pixel pro výše uvedený soubor PNG (červená = drahá, modrá = levná)

PNG používá dvoustupňový proces komprese:

  • před kompresí: filtrování (predikce)
  • komprese: DEFLATE

PNG používá DEFLATE , nepatentovaný algoritmus komprese bezeztrátových dat zahrnující kombinaci kódování LZ77 a Huffman . Povoleně licencované implementace DEFLATE, například zlib , jsou široce dostupné.

Ve srovnání s formáty se ztrátovou kompresí, jako je JPG , volba nastavení komprese vyšší než průměr zpomaluje zpracování, ale často nevede k výrazně menší velikosti souboru.

Filtrování

Metoda 0 PNG filtru může použít data v pixelech A, B a C k předpovědi hodnoty pro X.
PNG s 256 barvami, který je s předfiltrem velký pouze 251 bajtů. Stejný obrázek jako GIF by byl více než třináctkrát větší.

Než se použije DEFLATE, data se transformují pomocí metody predikce: pro celý obrázek se použije metoda jednoho filtru , zatímco pro každý řádek obrázku se zvolí typ filtru, který transformuje data tak, aby byla efektivněji komprimovatelná. Typ filtru použitý pro skener je předřazen ke skeneru, aby byla povolena inline dekomprese.

V současné specifikaci PNG existuje pouze jedna metoda filtrování (označená metoda 0), a proto je v praxi jedinou možností, který typ filtru použít pro každý řádek. U této metody filtr předpovídá hodnotu každého pixelu na základě hodnot předchozích sousedních pixelů a odečte predikovanou barvu pixelu od skutečné hodnoty, jako v DPCM . Takto filtrovaný obrazový řádek je často stlačitelnější, než by byl nezpracovaný obrazový řádek, zvláště pokud je podobný řádku výše, protože rozdíly oproti predikci budou obecně seskupeny kolem 0, spíše než rozloženy na všechny možné hodnoty obrázku. To je zvláště důležité při propojování samostatných řádků, protože DEFLATE nechápe, že obraz je 2D entita, a místo toho vidí obrazová data jako proud bajtů.

Pro metodu filtrování 0 existuje pět typů filtrů; každý typ předpovídá hodnotu každého bajtu (obrazových dat před filtrováním) na základě odpovídajícího bajtu pixelu vlevo ( A ), pixelu nad ( B ) a pixelu nad a vlevo ( C ) nebo jejich kombinace, a kóduje rozdíl mezi předpokládanou hodnotou a skutečnou hodnotou. Filtry jsou použity na hodnoty bajtů, nikoli na pixely; hodnoty pixelu mohou být jeden nebo dva bajty nebo několik hodnot na bajt, ale nikdy nepřekračují hranice bajtů. Typy filtrů jsou:

Zadejte byte Název filtru Předpokládaná hodnota
0 Žádný Nula (aby surová hodnota bajtu prošla nezměněna)
1 Sub Byte A (vlevo)
2 Nahoru Byte B (výše)
3 Průměrný Průměr bajtů A a B , zaokrouhleno dolů
4 Paeth A , B nebo C , podle toho, co je nejblíže k p = A + B - C

Paethův filtr je založen na algoritmu Alana W. Paetha . Srovnejte s verzí DPCM používanou v bezztrátovém formátu JPEG a s diskrétní vlnovou transformací pomocí 1 × 2, 2 × 1 nebo (pro Paeth prediktor) 2 × 2 oken a Haarových vlnek .

Kompresi dále vylepšuje adaptivní výběr typů filtrů po řádcích. Toto vylepšení a heuristickou metodu jeho implementace běžně používanou softwarem pro psaní PNG vytvořil Lee Daniel Crocker , který metody během vytváření formátu testoval na mnoha obrázcích; volba filtru je součástí optimalizace velikosti souboru, jak je uvedeno níže.

Je -li použito prokládání, je každá fáze prokládání filtrována samostatně, což znamená, že obraz lze postupně přijímat při přijímání každé fáze; prokládání však obecně snižuje účinnost komprese.

Prokládání

Ilustrace prokládání Adam7 přes obrázek 16 × 16.

PNG nabízí volitelné 2-dimenzionální, 7-průchodové prokládací schéma- algoritmus Adam7 . Toto je propracovanější než 1-dimenzionální, 4-průchozí schéma GIF a umožňuje, aby byl jasnější obraz s nízkým rozlišením viditelný dříve při přenosu, zvláště pokud jsou použity interpolační algoritmy, jako je bikubická interpolace .

Schéma 7 průchodů však má tendenci snižovat stlačitelnost dat více než jednodušší schémata.

Animace

Soubor APNG (animovaný PNG) (v některých webových prohlížečích se zobrazuje jako statický obrázek )

Samotný PNG animaci nepodporuje. MNG je rozšíření PNG, které ano; byl navržen členy skupiny PNG. MNG sdílí základní strukturu a bloky PNG, ale je podstatně složitější a má jiný podpis souboru, což jej automaticky činí nekompatibilním se standardními dekodéry PNG, což vedlo k tomu, že MNG téměř nemělo podporu nebo podporu, kterou většina webových prohlížečů nebo aplikací zrušila.

Složitost MNG vedla k návrhu APNG vývojáři Mozilla Foundation. Je založen na PNG, podporuje animaci a je jednodušší než MNG. APNG nabízí záložní zobrazení jednoho obrazu pro dekodéry PNG, které APNG nepodporují. Dnes je formát APNG v současné době široce podporován všemi hlavními webovými prohlížeči. APNG je podporováno ve Firefoxu 3.0 a vyšším , Pale Moon (všechny verze) a nejnovější verze Opery podporuje APNG od doby, kdy byl motor změněn na Blink. Nejnovější verze Safari pro iOS 8 a Safari 8 pro OS X Yosemite používají engine WebKit, který podporuje APNG. Chromium 59.0 přidal podporu APNG a následoval Google Chrome. Microsoft Edge nyní podporuje APNG s novým motorem založeným na Chromu.

Skupina PNG se v dubnu 2007 rozhodla nepřijmout APNG. Diskutovalo se o několika alternativách, ANG, aNIM/mPNG, „PNG v GIF“ a jeho podmnožině „RGBA v GIF“. Pouze APNG však v současné době podporuje všechny hlavní webové prohlížeče.

Příklady

Struktura velmi jednoduchého souboru PNG
89 50 4E 47 0D 0A 1A 0A
Podpis PNG
IHDR
Záhlaví obrázku
IDAT
Obrazová data
IEND
Konec obrázku
Obsah minimálního souboru PNG představujícího jeden červený pixel
Hex Jako postavy

89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
00 00 00 01 00 00 00 01 01 08 02 00 00 00 90 77 53
DE 00 00 00 0C 49 44 41 54 08 D7 63 F8 CF C0 00
00 03 01 01 00 18 DD 8D B0 00 00 00 00 49 49 45 4E
44 AE 42 60 82

.PNG .... .... IHDR
.............. wS
. .... IDAT..c ....
......... .... IEN
D.B`.

IHDR Chunk
Ofset na kus Šestihranná hodnota Desetinná hodnota Text Význam
0 0x0D 13 Část IHDR má 13 bajtů obsahu
4 0x49484452 IHDR Identifikuje kus záhlaví
8 0x01 1 Obrázek je široký 1 pixel
12 0x01 1 Obrázek je vysoký 1 pixel
16 0x08 8 8 bitů na pixel (na kanál)
17 0x02 2 Typ barvy 2 (RGB/truecolor)
18 0x00 0 Metoda komprese 0 (pouze přijatá hodnota)
19 0x00 0 Metoda filtrování 0 (pouze přijatá hodnota)
20 0x00 0 Není prokládaný
21 0x907753DE CRC typu a obsahu kusu (ale ne délky)
IDAT Chunk
Ofset na kus Šestihranná hodnota Význam
0 0x0C Část IDAT má 12 bajtů obsahu
4 0x49444154 Identifikuje datový blok
8 0x08 DEFLATE metoda komprese pomocí 256bajtového okna
9 0xD7 Hodnota ZLIB FCHECK, není použit žádný slovník, algoritmus maximální komprese
10 0x63F8CFC00000 Komprimovaný blok DEFLATE pomocí statického Huffmanova kódu, který dekóduje na 0x00 0xFF 0x00 0x00
16 0x03010100 Kontrolní hodnota ZLIB: kontrolní součet Adler32 nekomprimovaných dat
20 0x18DD8DB0 CRC typu a obsahu kusu (ale ne délky)

Zobrazeny módem hexadecimálních editorů , přičemž na levé straně jsou hodnoty bajtů zobrazeny v hexadecimálním formátu a na pravé straně jejich ekvivalentní znaky z ISO-8859-1 s nerozpoznanými a řídicí znaky nahrazeny tečkami. Podpis PNG a jednotlivé bloky jsou navíc označeny barvami. Všimněte si, že je lze snadno identifikovat díky jejich lidem čitelným názvům typů (v tomto případě PNG, IHDR, IDAT a IEND).

Výhody

Důvody pro použití této mezinárodní normy mohou být:

  • Přenosnost : Přenos je nezávislý na softwarové a hardwarové platformě.
  • Úplnost : je možné reprezentovat obrázky truecolor, indexed-color a greyscale.
  • Kódování a dekódování v sérii : umožňuje generovat a číst datové toky v sérii, to znamená, že formát datového proudu se používá pro generování a vizualizaci obrázků v současné době prostřednictvím sériové komunikace.
  • Progresivní prezentace : být schopen přenášet datové toky, které jsou zpočátku aproximací celého obrazu a postupně se zlepšují, jak je tok dat přijímán.
  • Správnost chyb přenosu : Správně detekuje chyby přenosu datového proudu.
  • Bezztrátovost : Žádná ztráta: filtrování a komprese zachovávají všechny informace.
  • Efektivita : jakákoli progresivní prezentace obrazu, komprese a filtrování hledá efektivní dekódování a prezentaci.
  • Komprese : obrázky lze efektivně a důsledně komprimovat.
  • Snadnost : implementace standardu je snadná.
  • Zaměnitelnost : jakýkoli dekodér PNG, který dodržuje standardy, může číst všechny datové toky PNG.
  • Flexibilita : umožňuje budoucí rozšíření a soukromé doplňky, aniž by to ovlivnilo předchozí bod.
  • Svoboda zákonných omezení : použité algoritmy jsou zdarma a přístupné.

Porovnání s jinými formáty souborů

Graphics Interchange Format (GIF)

  • Na malých obrázcích může GIF dosáhnout větší komprese než PNG (viz část o velikosti souborů níže).
  • Na většině obrázků, s výjimkou výše uvedeného případu, má soubor GIF větší velikost než indexovaný obrázek PNG.
  • PNG poskytuje mnohem širší škálu možností průhlednosti než GIF, včetně průhlednosti alfa kanálu .
  • Zatímco GIF je omezen na 8bitové indexované barvy , PNG poskytuje mnohem širší rozsah barevných hloubek, včetně 24bitových (8 bitů na kanál) a 48bitových (16 bitů na kanál) truecolor , což umožňuje větší přesnost barev, plynulejší mizí atd. Když je přidán alfa kanál, je možné až 64 bitů na pixel (před kompresí).
  • Při převodu obrázku z formátu PNG do formátu GIF může kvalita obrazu utrpět v důsledku posterizace, pokud má obrázek PNG více než 256 barev.
  • GIF bytostně podporuje animované obrázky. PNG podporuje animaci pouze prostřednictvím neoficiálních rozšíření (viz část o animaci výše).

Obrázky PNG jsou staršími prohlížeči podporovány méně. Zejména IE6 má omezenou podporu pro PNG.

JPEG

Kompozitní obraz porovnávající ztrátovou kompresi v JPEG s bezeztrátovou kompresí v PNG: artefakty JPEG lze snadno vidět na pozadí tohoto druhu obrazových dat, kde má obrázek PNG plnou barvu.

Formát JPEG (Joint Photographic Experts Group) může vytvořit menší soubor než PNG pro fotografické (a fotografické) obrázky, protože JPEG používá metodu ztrátového kódování specificky navrženou pro fotografická obrazová data, které obvykle dominuje měkký nízký kontrast přechody a množství hluku nebo podobných nepravidelných struktur. Použití PNG místo vysoce kvalitního JPEG pro takové obrázky by mělo za následek velký nárůst velikosti souboru se zanedbatelným nárůstem kvality. Pro srovnání, při ukládání obrázků obsahujících text, čárové grafiky nebo grafiky - obrázky s ostrými přechody a velkými plochami plné barvy - může formát PNG komprimovat obrazová data více, než dokáže JPEG. PNG je navíc bezztrátový, zatímco JPEG vytváří vizuální artefakty kolem oblastí s vysokým kontrastem. (Takové artefakty závisí na nastaveních použitých při kompresi JPG; mohou být docela patrné, pokud je použito nastavení nízké kvality [vysoká komprese].) Pokud obrázek obsahuje jak ostré přechody, tak fotografické části, je třeba zvolit mezi dva efekty. JPEG nepodporuje průhlednost.

Ztrátová komprese JPEG také trpí ztrátou generování , kde opakované dekódování a překódování obrázku za účelem jeho opětovného uložení způsobí pokaždé ztrátu informací a degradaci obrazu. Protože je PNG bezztrátový, je vhodný pro ukládání obrázků k úpravám. Zatímco PNG je při kompresi fotografických obrázků přiměřeně účinný, existují bezztrátové kompresní formáty navržené speciálně pro fotografické obrázky, například bezeztrátový WebP a Adobe DNG (digitální negativ). Tyto formáty však nejsou široce podporovány, nebo jsou proprietární. Obrázek lze bezztrátově uložit a převést do formátu JPEG pouze pro distribuci, takže nedojde ke ztrátě generace.

Zatímco specifikace PNG výslovně neobsahuje standard pro vkládání obrazových dat Exif ze zdrojů, jako jsou digitální fotoaparáty, upřednostňovanou metodou pro vkládání dat EXIF ​​do PNG je použití nekritického pomocného štítku eXIf.

Starší webové prohlížeče nepodporovaly obrázky PNG; JPEG a GIF byly hlavními formáty obrázků. JPEG se běžně používal při exportu obrázků obsahujících přechody pro webové stránky kvůli omezené barevné hloubce GIF. Komprese JPEG však způsobí mírné rozmazání přechodu. Formát PNG reprodukuje gradient co nejpřesněji pro danou bitovou hloubku a přitom udržuje malou velikost souboru. Protože se zlepšila podpora webového prohlížeče pro formát, stal se PNG optimální volbou pro malé obrázky s přechodem. K zobrazení přechodů v moderních prohlížečích nejsou potřeba vůbec žádné obrázky, protože přechody lze vytvářet pomocí CSS .

JPEG-LS

JPEG-LS je obrazový formát od skupiny Joint Photographic Experts Group , i když je mnohem méně známý a podporovaný než jiný ztrátový formát JPEG, o kterém jsme hovořili výše. Je přímo srovnatelný s PNG a má standardní sadu testovacích obrázků. Na Waterloo Repertoire ColorSet, standardní sadě testovacích obrázků (nesouvisejících s testovací sadou shody JPEG-LS), pracuje JPEG-LS obecně lépe než PNG, o 10–15%, ale u některých obrázků PNG funguje podstatně lépe, na řádově 50–75%. Pokud jsou tedy oba tyto formáty možnosti a velikost souboru je důležitým kritériem, měly by být v závislosti na obrázku zohledněny oba.

TIFF

Tagged Image File Format (TIFF) je formát, který obsahuje extrémně širokou škálu možností. Přestože je TIFF užitečný jako obecný formát pro výměnu mezi profesionálními aplikacemi pro úpravu obrázků, přidávání podpory pro aplikace je mnohem větší úkol, a proto má malou podporu v aplikacích, které se nezabývají manipulací s obrázky (jako jsou webové prohlížeče). Vysoká úroveň rozšiřitelnosti také znamená, že většina aplikací poskytuje pouze podmnožinu možných funkcí, což potenciálně může způsobit problémy se záměnou uživatelů a kompatibilitou.

Nejběžnějším univerzálním bezztrátovým kompresním algoritmem používaným s TIFF je Lempel – Ziv – Welch (LZW). Tato kompresní technika, používaná také v GIF, byla patentována až do roku 2003. TIFF také podporuje kompresní algoritmus, který používá PNG (tj. Compression Tag 0008 16 ' Adobe -style') se středním využitím a podporou aplikací. TIFF také nabízí speciální bezeztrátové kompresní algoritmy jako CCITT Group IV , které dokážou komprimovat dvouúrovňové obrázky (např. Faxy nebo černobílý text) lépe než kompresní algoritmus PNG.

PNG podporuje pouze nepremultiplied alfa, zatímco TIFF také podporuje „přidružené“ (premultiplied) alfa.

Softwarová podpora

Oficiální referenční implementací formátu PNG je programovací knihovna libpng . Je publikován jako svobodný software podle podmínek povolující licence svobodného softwaru . Proto se obvykle nachází jako důležitá systémová knihovna ve volných operačních systémech.

Podpora bitmapového grafického editoru pro PNG

Formát PNG je široce podporován grafickými programy, včetně aplikace Adobe Photoshop , Corel ‚s Photo-Paint a Paint Shop Pro , na GIMP , GraphicConverter , Helicon filtr , ImageMagick , Inkscape , IrfanView , editor obrázků Pixel, Paint.NET a Xara Photo & Grafický designér a mnoho dalších. Některé programy svázaný s populárními operačními systémy , které podporují PNG patří Microsoft ‚s Malování a Apple ‘ s Photos / iPhoto a Náhled , s GIMP také často být svázaný s populárními Linuxových distribucí.

Adobe Fireworks (dříve Macromedia ) používá PNG jako svůj nativní formát souboru, což umožňuje ostatním editorům obrázků a nástrojům náhledu zobrazit zploštělý obrázek. Fireworks však ve výchozím nastavení také ukládá metadata pro vrstvy, animace, vektorová data, text a efekty. Takové soubory by neměly být distribuovány přímo. Fireworks může místo toho exportovat obrázek jako optimalizovaný PNG bez dalších metadat pro použití na webových stránkách atd.

Podpora webového prohlížeče pro PNG

Podpora PNG se poprvé objevila v roce 1997, v aplikaci Internet Explorer 4.0b1 (32bitová verze pouze pro NT) a v Netscape 4.04.

Navzdory výzvám Free Software Foundation a World Wide Web Consortium (W3C), nástrojů jako gif2png a kampaní jako Burn All GIFs bylo přijetí PNG na webech poměrně pomalé kvůli pozdní a chybné podpoře v Internet Exploreru, zejména pokud jde o transparentnost .

Mezi prohlížeče kompatibilní s PNG patří: Apple Safari , Google Chrome , Mozilla Firefox , Opera , Camino , Internet Explorer 7 (stále mnoho problémů), Internet Explorer 8 (stále některé problémy), Internet Explorer 9 a mnoho dalších. Úplné srovnání najdete v tématu Porovnání webových prohlížečů (podpora formátu obrázku) .

Zejména verze aplikace Internet Explorer (Windows) pod 9.0 (vydaná 2011) mají mnoho problémů, které mu brání ve správném vykreslování obrázků PNG.

  • 4.0 havaruje na velkých kusech PNG.
  • 4.0 neobsahuje funkce pro zobrazení souborů .png, ale existuje oprava registru.
  • 5.0 a 5.01 porušily podporu OBJECT.
  • 5.01 tiskne obrázky palet s černým (nebo tmavě šedým) pozadím pod Windows 98, někdy s radikálně změněnými barvami.
  • 6.0 nedokáže zobrazit obrázky PNG o velikosti 4097 nebo 4098 bajtů.
  • 6.0 nelze otevřít soubor PNG, který obsahuje jeden nebo více bloků IDAT nulové délky. Tento problém byl poprvé vyřešen v aktualizaci zabezpečení 947864 (MS08-024). Další informace naleznete v tomto článku znalostní báze Microsoft Knowledge Base: 947864 MS08-024: Kumulativní aktualizace zabezpečení pro aplikaci Internet Explorer.
  • 6.0 někdy úplně ztrácí schopnost zobrazovat PNG, ale existují různé opravy.
  • 6.0 a nižší mají poškozenou podporu průhlednosti alfa kanálu (místo toho zobrazí výchozí barvu pozadí).
  • 7.0 a nižší nemohou kombinovat 8bitovou průhlednost alfa A neprůhlednost prvků ( CSS -filtr: Alpha (opacita = xx)) bez vyplnění částečně průhledných částí černou barvou.
  • 8.0 a nižší mají nekonzistentní/nefunkční podporu gama.
  • 8.0 a nižší nemají podporu pro korekci barev.

Podpora operačního systému pro ikony PNG

Ikony PNG jsou podporovány ve většině distribucí Linuxu nejméně od roku 1999, v desktopových prostředích, jako je GNOME . V roce 2006 byla v systému Windows Vista zavedena podpora systému Microsoft Windows pro ikony PNG . Ikony PNG jsou podporovány také v AmigaOS 4 , AROS , macOS , iOS a MorphOS . Android navíc ve velké míře využívá PNG.

Software pro optimalizaci velikosti souboru

Velikost souboru PNG se může výrazně lišit v závislosti na tom, jak je kódován a komprimován; toto je diskutováno a řada tipů je uvedena v PNG: The Definitive Guide.

Ve srovnání s GIF

Ve srovnání se soubory GIF je soubor PNG se stejnými informacemi (256 barev, žádné pomocné bloky/metadata) komprimovaný účinným kompresorem obvykle menší než obrázek GIF. V závislosti na souboru a kompresoru se PNG může pohybovat od poněkud menších (10%) po výrazně menší (50%) až o něco větší (5%), ale u velkých obrázků je zřídka výrazně větší. To je přičítáno výkonu DEFLATE PNG ve srovnání s LZW GIF a protože přidaná předkompresní vrstva prediktivních filtrů PNG zohledňuje 2-dimenzionální strukturu obrazu pro další kompresi souborů; protože filtrovaná data kódují rozdíly mezi pixely, budou mít tendenci se shlukovat blíže k 0, než aby se šířila napříč všemi možnými hodnotami, a tak budou snadněji komprimována pomocí DEFLATE. Některé verze aplikací Adobe Photoshop , CorelDRAW a MS Paint však poskytují špatnou kompresi PNG, což vytváří dojem, že GIF je efektivnější.

Faktory velikosti souboru

Soubory PNG se liší velikostí v důsledku řady faktorů:

barevná hloubka
Barevná hloubka se může pohybovat od 1 do 64 bitů na pixel.
pomocné kusy
PNG podporuje metadata - to může být užitečné pro úpravy, ale nepotřebné pro prohlížení, jako na webových stránkách.
prokládání
Protože každý průchod algoritmu Adam7 je samostatně filtrován, může to zvýšit velikost souboru.
filtr
Jako předkompresní fáze je každý řádek filtrován prediktivním filtrem, který se může měnit z řádku na řádek. Protože konečný krok DEFLATE funguje na filtrovaných datech celého obrázku, nelze optimalizovat tento řádek po řádku; výběr filtru pro každý řádek je tedy potenciálně velmi variabilní, i když heuristiky existují.
komprese
Díky dodatečnému výpočtu mohou kompresory DEFLATE vytvářet menší soubory.

Existuje tedy kompromis mezi velikostí souboru mezi vysokou barevnou hloubkou, maximálními metadaty (včetně informací o barevném prostoru spolu s informacemi, které nemají vliv na zobrazení), prokládáním a rychlostí komprese, což vše přináší velké soubory s nižší barevnou hloubkou, méně nebo žádné pomocné bloky, žádné prokládání a vyladěné, ale výpočetně náročné filtrování a komprese. Pro různé účely jsou zvoleny různé kompromisy: maximální soubor může být nejlepší pro archivaci a úpravy, zatímco pro použití na webu může být nejvhodnější svlečený soubor a podobně je preferována rychlá, ale špatná komprese při opakovaných úpravách a ukládání když je soubor stabilní: při archivaci nebo zveřejňování je upřednostňována pomalá, ale vysoká komprese. Překládání je kompromis: dramaticky zrychluje časné vykreslování velkých souborů (zlepšuje latenci), ale může zvětšovat velikost souboru (snižovat propustnost) s malým ziskem, zejména u malých souborů.

Ztráta komprese PNG

Přestože je formát PNG bezztrátový, kodéry PNG mohou předzpracovávat obrazová data ztrátovým způsobem, aby se zlepšila komprimace PNG. Například kvantifikace PNG truecolor na 256 barev umožňuje použít indexovaný typ barvy pro pravděpodobné zmenšení velikosti souboru.

Software pro úpravu obrázků

Některé programy jsou při ukládání souborů PNG efektivnější než jiné, což souvisí s implementací komprese PNG, kterou program používá.

Mnoho grafických programů (například software Apple Preview ) ukládá soubory PNG s velkým množstvím metadat a dat pro korekci barev, které jsou pro prohlížení webu obecně zbytečné . Neoptimalizované soubory PNG z Adobe Fireworks jsou také proslulé, protože obsahují možnosti, jak upravit obrázek v podporovaných editorech. Také CorelDRAW (alespoň verze 11) někdy produkuje soubory PNG, které nelze otevřít v aplikaci Internet Explorer (verze 6–8).

Výkon Adobe Photoshopu na souborech PNG se v CS Suite zlepšil při použití funkce Uložit pro web (která také umožňuje explicitní použití PNG/8).

Adobe Fireworks standardně ukládá větší soubory PNG než mnoho programů. Vyplývá to z mechaniky jeho formátu Uložit : obrázky vytvořené funkcí ukládání Fireworks obsahují velké soukromé bloky obsahující kompletní informace o vrstvě a vektoru. To umožňuje další bezeztrátové úpravy. Při uložení pomocí možnosti Export jsou PNG Fireworks konkurenceschopné s těmi, které vytvářejí jiné editory obrázků, ale již je nelze upravovat jako nic jiného než zploštělé bitmapy. Fireworks nedokáže ukládat velikostně optimalizované vektorově upravitelné soubory PNG.

Mezi další pozoruhodné příklady špatných kompresorů PNG patří:

  • Microsoft Paint pro Windows XP
  • Microsoft Picture It! Photo Premium 9

Špatná komprese zvyšuje velikost souboru PNG, ale neovlivňuje kvalitu obrazu ani kompatibilitu souboru s jinými programy.

Když se barevná hloubka obrazu truecolor zmenší na 8bitovou paletu (jako v GIF), výsledná obrazová data jsou obvykle mnohem menší. Truecolor PNG je tedy obvykle větší než GIF s redukovanou barvou, i když PNG může uložit verzi s redukovanou barvou jako paletizovaný soubor srovnatelné velikosti. Naopak některé nástroje při ukládání obrázků ve formátu PNG je automaticky ukládají jako truecolor, i když původní data používají pouze 8bitové barvy, čímž soubor zbytečně nafukují. Oba faktory mohou vést k mylné představě, že soubory PNG jsou větší než ekvivalentní soubory GIF.

Optimalizační nástroje

K optimalizaci souborů PNG jsou k dispozici různé nástroje; dělají to:

  • (volitelně) odstranění pomocných bloků,
  • snížení hloubky barev, buď:
    • pokud má obrázek 256 nebo méně barev, použijte paletu (místo RGB),
    • použijte menší paletu, pokud má obrázek 2, 4 nebo 16 barev, popř
    • (volitelně) ztrátově zahodit některá data na původním obrázku,
  • optimalizace výběru filtru řádek po řádku a
  • optimalizace DEFLATE komprese.

Seznam nástrojů

  • pngcrush je nejstarší z oblíbených optimalizátorů PNG. Umožňuje několik pokusů o výběr filtru a argumenty komprese a nakonec vybere ten nejmenší. Tento funkční model se používá téměř v každém optimalizátoru PNG.
  • OptiPNG byl inspirován pngcrush, ale iteruje v širším rozsahu parametrů komprese a provádí zkoušky v paměti pro rychlejší provedení. Hlavním účelem OptiPNG je zmenšit velikost datového proudu PNG IDAT vyzkoušením různých metod filtrování a komprese. Pokud je to možné, provádí také automatickou bitovou hloubku, redukci typu barev a barevné palety a dokáže opravit některé chyby integrity dat ve vstupních souborech. (pngcrush má v pozdější verzi možnost provést redukci barev.)
  • advpng a podobný nástroj advdef v balíčku AdvanceCOMP znovu zkomprimují PNG IDAT. Různé implementace Deflate se aplikují v závislosti na zvoleném stupni komprese, obchodování mezi rychlostí a velikostí souboru: zlib na úrovni 1, libdeflate na úrovni 2, 7-zip je LZMA DEFLATE na úrovni 3 a zopfli na úrovni 4.
  • pngout byl vytvořen pomocí vlastního deflateru autora (stejný jako autorův zip zip, kzip), při zachování všech možností redukce / filtrování barev. Pngout však neumožňuje použít několik pokusů o filtry v jednom běhu. Je navrženo, aby využila svého komerční GUI verzi, pngoutwin, nebo použitý s obalem automatizovat studií nebo do zkomprimovat pomocí vlastní deflater zároveň udržet filtrační řádek po řádku.
  • zopflipng byl také vyroben s vlastním deflaterem, zopfli. Má všechny optimalizační funkce, které optipng a pngcrush mají (včetně automatizovaných testů), a přitom poskytuje velmi dobrý, ale pomalý deflater.

Jednoduché srovnání jejich vlastností je uvedeno níže.

Optimalizátor Odstranění kusu Redukce barev Filtrování Opětovné použití filtru Více pokusů o filtry v jednom běhu Deflater
advpng Ano Ne 0 Ne N/A (násobek)
advdef Ne Ne Znovu použije předchozí sadu filtrů Vždy N/A (násobek)
OptiPNG Ano Ano 0–4 nebo adaptivní Ne Ano zlib
pngcrush Ano Ano 0–4 nebo adaptivní Ne Ano zlib
pngout Ano Ano 0–4 nebo adaptivní Ano Ne kzip
zopflipng Ano Ano 0–4 nebo adaptivní se 2 různými algoritmy nebo hrubou cestou Ano Ano zopfli

Než byl zopflipng k dispozici, je dobrým způsobem, jak v praxi provádět optimalizaci PNG, použít kombinaci 2 nástrojů v pořadí pro optimální kompresi: jeden, který optimalizuje filtry (a odstraňuje pomocné bloky) a druhý, který optimalizuje DEFLATE. Přestože pngout nabízí obojí, lze v jednom běhu zadat pouze jeden typ filtru, a proto jej lze použít s nástrojem wrapper nebo v kombinaci s optipng nebo pngcrush , fungujícím jako deflter, jako advdef.

Odstranění pomocného kusu

Pro odstranění pomocných bloků má většina nástrojů pro optimalizaci PNG schopnost odstranit všechna data pro korekci barev ze souborů PNG (gamma, vyvážení bílé, barevný profil ICC, standardní barevný profil RGB). Výsledkem je často mnohem menší velikost souboru. Například následující možnosti příkazového řádku toho dosáhnou pomocí pngcrush:

pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB InputFile.png OutputFile.png

Pomocné bloky lze také bezeztrátově odstranit pomocí bezplatného programu Win32 PNGExtra .

Optimalizace filtru

OptiPNG, pngcrush, pngout a zopflipng všechny nabízejí možnosti použití jednoho z typů filtrů 0–4 globálně (pomocí stejného typu filtru pro všechny řádky) nebo s „pseudofiltrem“ (číslováno 5), který pro každý řádek vybere jeden z filtry typu 0–4 pomocí adaptivního algoritmu. Zopflipng nabízí 3 různé adaptivní metody, včetně vyhledávání hrubou silou, které se pokouší optimalizovat filtrování.

pngout a zopflipng poskytují možnost zachovat/znovu použít sadu filtrů řádek po řádku přítomnou ve vstupním obrázku.

OptiPNG, pngcrush a zopflipng poskytují možnosti vyzkoušet různé strategie filtrování v jednom běhu a vybrat si to nejlepší. Freeware verze příkazového řádku pngout toto nenabízí, ale komerční verze pngoutwin ano.

Optimalizace DEFLATE

zopfli a LZMA SDK využívají implementace DEFLATE, které produkují vyšší kompresní poměry než referenční implementace zlib za cenu výkonu. AdvanceCOMP ‚s advpnga advdefmůžete použít některou z těchto knihoven na re-komprimovat soubory PNG. Navíc PNGOUT obsahuje vlastní proprietární implementaci DEFLATE.

advpngnemá možnost použít filtry a vždy používá filtr 0 globálně (ponechání obrazových dat nefiltrovaných); proto by neměl být používán tam, kde obraz výrazně těží z filtrování. Naproti tomu advdefze stejného balíčku se nezabývá strukturou PNG a funguje pouze jako deflater, přičemž zachovává všechna stávající nastavení filtru.

Optimalizace ikon

Protože ikony určené pro Windows Vista a novější verze mohou obsahovat dílčí obrázky PNG, lze na ně použít i optimalizace. Minimálně jeden editor ikon , Pixelformer , je schopen provádět speciální optimalizační průchod při ukládání souborů ICO , čímž se zmenšuje jejich velikost. FileOptimizer (zmíněný výše) si poradí i se soubory ICO.

Ikony pro macOS mohou také obsahovat dílčí obrázky PNG, ale takový nástroj není k dispozici.

Viz také

Poznámky

Reference

Další čtení

externí odkazy