PNG
A PNG (Portable Network Graphics) képek tárolására, veszteségmentes tömörítésére alkalmas fájlformátum. Kiterjesztésként a .png írásmóddal használják.
Portable Network Graphics (PNG) | |
Fájlkiterjesztés | .png |
MIME-típus | image/png |
Fejlesztő | W3C |
Kiadás dátuma | 1996. október 1. |
Formátum típusa | képformátum |
Mac OS típuskód | PNGf |
Weboldal | www.libpng.org/pub/png/ |
Jellemzése
szerkesztésA PNG egy viszonylag fiatal fájlformátum, a GIF utódaként emlegetik. Kifejlesztésének oka volt, hogy a GIF formátumnál használt LZW tömörítési algoritmus jogi oltalom alá eső eljárásokat tartalmazott, vagyis a GIF tömörítés üzleti használatához jogdíj megfizetése volt kötelező. A PNG elsődlegesen a deflation nevű algoritmust használja (az LZ77 egy módosított változatát, a zlib programkönyvtár segítségével).
A PNG egy veszteségmentes tömörítési eljárás. Ez azt jelenti, hogy ha adott egy tömörítetlen kép, melyet PNG formátumba tömörítünk (ezzel a fájl méretét csökkentve), majd az eredményt kicsomagoljuk, és az eredeti képpel együtt kinagyítjuk, akkor képpontról képpontra haladva az összehasonlítás azt mutatja, hogy az eredeti kép és a tömörítésen átesett kép tökéletesen megegyezik, tehát semmilyen információ nem veszett el vagy torzult el a tömörítés során. Hasonlóképpen veszteségmentes tömörítést végez az összes olyan eljárás is, amely például programfájlok méretének csökkentésére használatos, így a (Pk)ZIP, ARJ, RAR, 7Z formátumú tömörítés is. Veszteséges tömörítést alkalmaznak például a JPG, MP3, MP4 és más multimédiás tömörítési eljárások.
Veszteségmentes tömörítést érdemes alkalmazni azoknál a képeknél, amelyeknek a fotófeldolgozását, retusálását később akarjuk elvégezni, illetve egy pixelnyi torzulást sem tartunk megengedhetőnek. A tömörítés a képben levő sok pontosan azonos színű pixel jelenlétét használja ki, azok helyett egy „rövidítést” alkalmaz, így a képfájl mérete jelentősen csökkenthető lehet. Jellegzetesen ideális a PNG tömörítés számítógéppel előállított (és nem beszkennelt) szöveges ábrák, diagramok, vonalas rajzok, pontosan egyszínű mezőket, foltokat tartalmazó képek tömörítésére. A JPG formátum ezekben szemmel látható, jellegzetes torzulásokat, hamis kontúrokat, elmosódott vonalakat, „szellemképeket” eredményez, vagyis az alkalmazása ilyen esetben nem szerencsés. A PNG olyan kép esetében, amelyben igen sokféle szín van (például részletgazdag, árnyalt fényképek vagy beszkennelt könyvlapok), a túl nagy változatosság nem tud jelentős eredményt, méretcsökkenést elérni, bár valamennyit akkor is. Ilyen képek esetében a JPG tömörítés az alkalmasabb, mert szemmel észre nem vehető változtatásokkal (eltérő tömörítési algoritmusával) optimalizálva a képet jelentős méretcsökkenést képes létrehozni, némi adatvesztés árán, amely csak kinagyítva felfedezhető.
Előnyei
szerkesztésA PNG számos előnnyel rendelkezik a GIF-hez képest:
- alfa csatornákkal, ami a fokozatosan átlátszó képeket teszi lehetővé,
- gamma korrekcióval, ami a képek fényességét (elméletben) függetleníteni tudja a megjelenítéstől (tehát a színek ugyanúgy néznek ki nyomtatásban, és eltérő képességű kijelzőkön),
- kétdimenziós fokozatos kijelzés,
- támogat indexelt, szürkeskálás (16 bitig) és true color (48 bitig) formátumot,
- hasonló, vagy jobb tömörítés.
A PNG a GIF-fel szemben nem támogatja a több képet tartalmazó állományokat (erre az MNG való, a PNG-hez hasonló formátum).
Fokozatos megjelenítés
szerkesztésA PNG egyik újdonsága a képek fokozatos megjelenítésének új módja (ennek neve Adam-7), ami lehetővé teszi, hogy lassú átvitel vagy nagy méretű kép esetén már a letöltés elején látni lehessen elnagyoltan (kis felbontásban) a kép tartalmát, ami a letöltés előrehaladtával fokozatosan nyeri el részletgazdagságát.
A GIF kétmenetes megjelenítése a kép egynyolcadának megérkezése után mutat először teljes, elnagyolt képet, és a következő fázist csak a teljes kép megérkezése után kapjuk meg. Az elnagyolt kép esetén a torzítás 8:1-hez, a képből csak „csíkok” látszanak.
A PNG ezzel szemben a kép 1/64-edének megérkeztekor már képes hozzávetőleges képet mutatni, ráadásul a képpontok nem torzítanak többet, mint 2:1, vagyis a durva kép egyenletesen tartalmazza a végleges képet.
Az illusztráció mutatja a képpontok (pixel) megérkezésének sorrendjét: minden olyan pixel, ahova még nem érkezett adat általában a tőle balra és felfelé eső már ismert pixel színét kapja (de lehetséges a fraktál-tömörítéshez hasonlóan átmeneteket generálni az ismert pixelek színei között), így az első fázisban (harmadik kis kép) az egész kép "citromsárga", a negyedikben a bal fele "citrom", a jobb fele "narancs", az ötödikben a negyedek sorban: citrom, narancs, kék és másik kék, és így tovább. (A golyók színei nem a pixelek színét, hanem az "egyszerre (egy fázisban) érkező pixeleket" mutatják.)
Előfeldolgozott pixelek
szerkesztésA PNG további újítása az, hogy minden képpont (pixel) elő-feldolgozott. Öt módszer van erre definiálva:
- 0. típus, (NONE), nincs sehogy módosítva,
- 1. típus, (SUB), az adott és a megelőző bal oldali képpont közti különbség tárolt,
- 2. típus, (UP), az adott és az előző felső soron lévő (tehát a jelenlegi felett lévő) képpont közti különbség tárolt,
- 3. típus, (AVERAGE), az adott képpont és annak jobb és baloldalt lévő szomszédjai közti különbség tárolt,
- 4. típus, (PAETH), az adott képpont és három szomszédja (bal, felső és bal felső) értékeinek a Paeth-algoritmussal (Alan W. Paeth javaslata) való feldolgozás után kapott érték tárolt.
True Color
szerkesztésTovábbi fontos tulajdonsága és a GIF-fel szemben előnye, hogy true color módban lévő képeket is képes tárolni. Az elért tömörítési arány természetesen nem olyan kedvező, mint a JPEG esetében, viszont JPEG-gel szemben a PNG tömörítési eljárása veszteségmentes. A PNG emellett azon képformátumok közé tartozik, amelyek RGBA színskálájú képekre is használhatóak.
Animációk
szerkesztésA PNG formátum önmagában nem támogatja animációk létrehozását. Ezért a PNG fejlesztőcsapat létrehozta az MNG formátumot. A MNG hasonló fájlstruktúrával rendelkezik, mint a PNG, de jóval összetettebb. Egy másik alternatíva a Mozilla Alapítvány által kifejlesztett APNG (Animated PNG). Ennek a formátumnak fontos előnye a szabványos PNG formátummal való visszafelé kompatibilitás. Az APNG formátumot nem támogató szoftverek is képesek megjeleníteni az animáció első képkockáját.
Technikai információk
szerkesztésMinden szabványos PNG fájl egy 8 bájt hosszúságú fejléccel kezdődik. Az alábbi táblázat mutatja ennek a struktúráját:
Bájt(ok) - hexadecimális | Jelentés |
---|---|
89 | Egyebek mellett annak az elkerülésére szolgál, hogy egyszerű szöveges fájlok PNG fájlokként legyenek interpretálva, vagy fordítva. |
50 4E 47 | A "PNG" karakterlánc ASCII értéke, amely azt segíti elő, hogy a PNG fájl könnyen felismerhető legyen, akár egyszerű szövegszerkesztővel történő megnyitásnál is. |
0D 0A | DOS stílusú sorvége jel, a DOS/Windows jellegű sorvége kódolás detektálására. |
1A | Ez a karakter leállítja a fájl tartalmának listázását DOS rendszeren. |
0A | Unix fájlvége karakter, az Unix jellegű sorvége kódolás detektálására. |
Chunk-ok a fájlban
szerkesztésA PNG formátumban a képhez tartozó összes adat ún. chunk-okban található (ez a szó az angolból ered, jelentése "darab"). Minden egyes chunk a következő struktúra szerint épül fel:
Hossz (4 bájt) |
Típus (4 bájt) |
Adatok (hossznyi bájt) |
CRC (4 bájt) |
Az adatokat az ún. hálózati byte-sorrendben (big-endian) tárolják.
A legfontosabb chunk-ok
szerkesztésNév | Szerepe a fájlban |
---|---|
IHDR | Az első chunk a fájlban. Többek között olyan alapvető információkat tartalmaz, mint a kép szélessége és magassága. |
PLTE | A felhasznált palettát tárolja. Használata nem kötelező, a true color képek nem használják. |
IDAT | A képet magát tartalmazza, tömörített formában. |
IEND | A fájlt lezáró chunk, az ez után található adat nem interpretálódik. |
Kapcsolódó szócikkek
szerkesztésTovábbi információk
szerkesztésForrások
szerkesztés- A. W. Paeth. Image File Compression Made Easy. In James Arvo ed.: Graphics Gems II. Academic Press, San Diego, 1991. ISBN 0-12-064480-0