PNG

A Wikipédiából, a szabad enciklopédiából
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
Weboldalwww.libpng.org/pub/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.

Jellemzése[szerkesztés]

A 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és]

A 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és]

A 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.

Képpontok fokozatos megjelenítése
Képpontok fokozatos megjelenítése

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és]

A 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és]

Tová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és]

A 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és]

Minden 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és]

A 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és]

Né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és]

További információk[szerkesztés]

Forrá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