PNGPNG képformátum:

Képek tárolására, tömörítésére alkalmas veszteségmentes formátum, sokan a jövő egyik lehetséges nyerő típusának tartják. A rövidítés eredetije: Portable Network Graphics. A PNG-t eredetileg a GIF (Graphics Interchange Format) utódjának, illetve helyettesítőjének fejlesztették ki. Lehetőségei miatt elsősorban a hálózatokban használják grafikus adatok továbbítására, illetve tárolására. Tömörítésre - a GIF-fel ellentétben - nem az LZW algoritmust használja, hiszen a PNG kifejlesztésekor éppen a jogi problémák elkerülése volt az egyik fő cél; helyette az LZ77 egyik módosított változatát, a „deflation” nevű algoritmust használja a „zlib” programkönyvtár segítségével. Nem hivatalos rövidítése: PNG's Not a Gif. (URL: http://web-building.crispen.org/formats/png.html)

 

A PNG támogatja a 24-bites paletta-alapú képábrázolást, a szürkeárnyalatos, illetve az RGB-képeket is. Mivel a PNG-t eredetileg képek interneten keresztüli továbbítására tervezték, nem pedig professzionális alkalmazásra, ezért nem támogatja az egyéb színterek használatát, például a CMYK-t sem.

Kijelölt MIME típusa: image/png. Eredeti szabvány dátuma: 1996. október 14.

Kifejlesztő: PNG Development Group (W3C.org támogatással)

A PNG típusú ikont több operációs rendszer is támogatja. A GNU/Linux már 1999-től teljes támogatást nyújt. A Microsoft Windows csak a Vista megjelenése után támogatta ezt a lehetőséget. Nagyobb gondot jelentett a böngészőkkel való kompatibilitás. A PNG-támogatás már a korai Netscape/Mozilla-verziókban megjelent, de az Internet Explorer csak a 7.0-ás verziótól fogva képes megfelelően jó támogatást nyújtani a PNG-hez, bár már a 4.0b1 verzióban is volt némi PNG-s rész.

Történelem és fejlődés:

A PNG kifejlesztéséhez a legnagyobb indíttatást az Unisys adta 1995 körül, amikor a GIF tömörítéséhez használt LZW-algoritmusra bejelentette szabadalmi igényét. További problémaként felmerült, hogy a GIF-képek mindössze 256 színt tudtak egyszerre megjeleníteni, pedig a számítógépek eddigre ezt már meghaladták. Habár a GIF lehetővé teszi az animációt, a fejlesztői csoport mégis úgy döntött, hogy ez nem kell a PNG-be.

1995 januárjában a „comp.graphics” nevű Usenet csoportban tartottak egy előzetes megbeszélést egy a „GIF-et helyettesítő képformátum” tárgyában, ebből alakult ki később a PNG. Oliver Fromme , az MS-DOS alatti képszerű JPEG-nézegető program, a QPEG szerzője javasolta a PING rövidített nevet, mely eredeti jelentésében: Png Is Not a Gif (Értsd: A PNG nem GIF) URL: http://groups.google.com/group/comp.graphics/msg/1131d852358a7578

  • 1996. okt. 1.: Megjelent az 1.0-ás verzió leírása. Későbbi szabványneve: RFC 2083.

  • 1998. dec. 31.: Megjelent az 1.1-es verzió néhány apróbb változtatással, három apróbb kiegészítéssel.

  • 1999. aug. 11.: Újabb verzió, ezúttal az 1.2-es – egyetlen apró kiegészítéssel.

  • 2003. nov. 10.: A PNG nemzetközi szabvány lett (ISO/IEC 15948:2003). Ez csak nagyon kis mértékben különbözik az 1.2-es verziótól, nem tartalmaz semmilyen lényegesebb kiegészítést.

  • 2004. márc. 3.: Megjelent a végleges ISO/IEC 15948:2004-es szabvány. (URL: http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=29581)

Fejléc:

A PNG egy speciális, csak itt megtalálható 8 bájtos fejléccel kezdődik. A hexadecimális értékek: 89 50 4E 47 0D 0A 1A 0A.

URL: http://www.libpng.org/pub/png/spec/1.1/PNG-Rationale.html#R.PNG-file-signature

Bájt(ok)

Leírás

89

A 8 bites adatátvitelt nem támogató rendszerek átviteli bitjét beállítja,így csökkenti annak kockázatát, hogy hibásan szövegfájlnak ismerjék fel a típust.

50 4E 47

ASCII-ben kódolt PNG betűk, így a fájlkezelő könnyen azonosítja a típust.

0D 0A

Egy DOS-szerű sor-vége-jel (CRLF), hogy a DOS-UNIX rendszerek is jól értelmezzék a sor-vége jelet.

1A

Egy bájt, amely a DOS alatt leállítja a képernyős beolvasást, fájl-vége karakter.

0A

UNIX-típusú sor-vége-jel, hogy a DOS-UNIX rendszerek helyesen megérezzék a fejléc végét.


Kép részei:

A fejléc után természetesen a kép egyes információi következnek. Egyes információmorzsák, illetve szeletek kritikusak, míg mások csak kompatibilitási, illetve további fejlesztési célokat szolgálnak, így kevésbé lényegesek. Ez a látszólag bonyolult koncepció teszi lehetővé a PNG további fejlesztését, illetve egyéb PNG-alapú fejlesztéseket. Ugyanilyen fájlszerkezetet használnak (a nem igazán  elterjedt) MNG, JNG és APNG formátumok is.

Ezek a szeletek alapvetően 4 részből állnak:

  • Szelet hossza – 4 bájt

  • Szelet típusa – 4 bájt

  • Szelet adatai – hossz változhat

  • Ellenőrző CRC-összeg – 4 bájt (CRC = Cyclic Redundancy Code)

Ezek a szeletek 4-betűs kis-/nagybetű-érzékeny ASCII kódolással rendelkeznek. Az első betű a szelet kritikus mivoltát jelzi a dekódolónak. Ha a karakter nagybetűs, akkor fontos a szelet, más esetben pedig mellőzhető. A kritikus szeletek olyan információkat tartalmaznak, amelyek feltétlenül fontosak a teljes fájl olvasásához. Ha a dekóder nem ismeri fel a szelet kritikus mivoltát és mellőzi azt, akkor ki kell lépnie a fájl olvasásából; de alkalmazástól függően küldhet megfelelő figyelmeztetést is a felhasználónak.

A szelet második betűje a nyilvánosságot (nagybetű) vagy a privát (kisbetű) mivoltát jelzi. Ez biztosítja, hogy a publikus közszféra, illetve a magánszféra soha ne ütközzön; bár ez a megoldás sajnos azt nem biztosítja, hogy két magánszférás kódolás ne ütközzön.

A harmadik betű nagybetűje jelzi, hogy az illető fájl megfelel-e a PNG előírásainak. Bár a valódi jelentése még nem igazán ismert, mivel inkább a jövőbeli fejlesztéseknek van fenntartva.

A negyedik betű jelzi a képszerkesztőknek jelzi, hogy a fájl biztonságosan másolható-e. Ha kisbetűs, akkor a fájl szelete biztonságosan másolható az egyes változtatások számától és minőségétől függetlenül. Ha ez nagybetű, akkor csak akkor másolható, ha a változások nem érték el a kritikus szeleteket.

Kritikus és (néhány) nem kritikus szeletek:

Fontos, hogy a dekóder ezen szeleteket biztonságosan olvassa, mivel csak így tudja helyesen megjeleníteni a PNG fájlt.

  • IHDR: ez tartalmazza a fejlécet

  • PLTE: a palettát tartalmazza. Gyakorlatban a színek listáját.

  • IDAT: a képet tartalmazza, bár ezt több IDAT szeletben is le lehet kódolni. Tény, hogy ezáltal kicsit növekszik a fájlméret, de ezáltal lehetővé válik a PNG fájlok streaming módban való megjelenítése.

  • IEND: a kép vége.

  • bKGD: alapértelmezett háttérszín. Nem alapvető. Akkor kell használni, ha nincsen jobb választás. Webes böngészőkben ezt más megoldással érik el.

  • iTXt: UTF-8-as kódolással tartalmaz szöveget. Nyelv választható. Nem alapvető.

  • pHYs: Képméret, illetve képarány. Nem alapvető.

  • tIME: a kép utolsó változtatásának ideje. Nem alapvető.

  • tRNS: átlátszósági információk. Nem alapvető.

Színmélység és átlapolás:PNG sorrend

A használt színek, illetve színcsatornák száma alapvetően attól függ, hogy a a kép szürkeárnyalatos-e, valamint, hogy használja-e az alfa-csatornát. A PNG számos kombinációt tesz lehetővé.

A csak szürke árnyalatait megjelenítő képek mellett lehetővé válik a 24 bites színmélységű truecolor képek megjelenítése is, valamint a kibővített, 24 bites színmélységűek is jól tárolhatóak.

A PNG 2-dimenziós, 7-utas megjelenítési technológiát tesz lehetővé. Ez az Adam7 algoritmus. Így lassú átvitel vagy nagy méretű kép esetén már a letöltés elején látni lehet elnagyoltan (kis felbontásban) a kép tartalmát, ami a letöltés előrehaladtával fokozatosan nyeri el részletgazdagságát. Ez jóval több lehetőséget ad, mint a GIF maga 1-dimenziós, 4-utas módszere. Ezt mutatja az oldalt is látható kis kép. (16x16-os kis kép Adam7-es megjelenítése átlapolással) Eredetije: http://en.wikipedia.org/wiki/Portable_Network_Graphics

Animáció:

Habár maga a PNG alapformátuma nem támogatja az animációt, de ennek kiküszöbölésére számos más megoldás létezik, például a MNG típus, melyet szintén a PNG csoport tagjai hoztak létre. (Hivatalos dátum: 2001. január 31.) Az MNG alapvetően a PNG struktúráját és szeleteit örökölte, de az animáció miatt sokkal bonyolultabb fájlszerkezete van és persze más a fájl-azonosítója, mint az elődjének. Ezen bonyolítások hatására a legtöbb PNG-dekóder nem tudja jól megjeleníteni az MNG-képeket.

Éppen ez a bonyolultság eredményezte, hogy a Mozilla Alapítvány önálló, APNG nevű formátumot javasolt, mint a PNG animációs utódját. Ennek szintén a PNG az alapja, de jóval egyszerűbb, mint az MNG. Maga az APNG szintén képes megjeleníteni egy teljes (szimpla) PNG képet. Azonban ezen formátumok egyike sem támogatott elég széleskörűen, bár az APNG-t a Firefox 3.0 és az Opera 9.5 feletti verziói támogatják.

(URL: http://my.opera.com/desktopteam/blog/2007/09/14/opera-9-5-build)

 

Felhasznált szakirodalom:

© TFeri.hu, 2009

Felújítva: 2016. és 2020.