PNG

Izvor: Wikipedija
Skoči na: orijentacija, traži
Ime Portable Network Graphic
Ekstenzija .png
MIME image/png
typecode PNGf
uniform type public.png
Vrsta Lossless bitmap slikovni format
Vlasnik PNG Razvojna Grupa
(predano W3C-u - World Wide Web konzorciju)
Standard ISO 15948, IETF RFC 2083
Prošireno na APNG, JNG i MNG
PNG transparency demonstration 1.png
PNG slika s 8-bitnim transparentnim (prozirnim) kanalom
PNG transparency demonstration 2.png
Ista slika na pozadini u obliku šahovnice,

što je uobičajena oznaka prozirnosti kod uređivača slika.

PNG (eng. Portable Network Graphics) je otvoreni grafički format namjenjen pohrani ili streamingu nepokretnih slika bez gubitaka, nastao kao zamjena za GIF. Ime se čita ping. Za pokretne je zadužen tzv. MNG format, koji nije rasprostranjen.

PNG (Portable Network Graphics) je bitmap slikovni format koji koristi lossless kompresiju. PNG je stvoren kako bi poboljšao i zamjenio GIF format formatom koji ne treba patentiranu dozvolu (licencu) za korištenje. PNG se službeno izgovara "ping" (/pɪŋ/ u IPA), ali se i često izgovara jednostavno png (ping je mrežni alat). PNG podržava libpng, platformski neovisna biblioteka koja sadrži C funkcije za rad s PNG slikama.

PNG podržava slike zasnovane na paleti (s paletom definiranom 24 bitnim RGB bojama), greyscale slike (sivih tonova) i RGB slike. Zamišljen je kao grafički format za razmijenu preko interneta, a ne za profesionalnu uporabu, tako da ne koristi neke druge sheme boja (kao što je CMYK (cyan-mangenta-yellow-black)).

PNG datoteke u pravilu uvijek koriste ekstenziju PNG ili png i dodjeljen im je MIME media type standard image/png (odobren 14. listopada 1996).

Povijest i razvoj[uredi VE | uredi]

Potreba za stvaranjem PNG formata javila se rane 1995,nakon što je Unisys najavio da će softverskim patentom zaštititi LZW kompresijski algoritam korišten u sažimanju GIF formata - vidi GIF (Unisys and LZW patent enforcement). Također, rekurzivni akronim je, neslužbeno, "PNG's Not GIF" (engl. PNG nije GIF) [1](patent je istekao 2003.). Također, postojali su i drugi problemi kod GIF formata zbog kojih je nastala potreba za novim formatom, najznačajnija je ograničenost GIF formata na 256 boja u vrijeme kada su računala, koja su već bila u mogućnosti prikazati mnogo više, bila rasprostranjena. Iako GIF ima mogućnost animacije, odlučeno je da će PNG biti jedno-slikovni format. Format pod nazivom MNG je osnovana za animaciju. PNG je zadobio dodatnu popularnost u Kolovozu 1999, nakon što je Unisys ukinuo svoje patentne dozvole za razvijatelje slobodnog i nekomercijalnog software-a.

  • 1.10.1996 - Verzija 1.0 PNG specifikacije izdana, kasnije se pojavljuje kao RFC 2083.
  • 01.10.1996 - Verzija 1.0 postaje preporuka W3C
  • 31.12.1998 - Verzija 1.1 izdana, s malim promjenama i dodatkom tri nova dijela (chunks).
  • 11.8.1999 - Verzija 1.2 izdana, dodaje jedan dodatni dio.
  • 10.11.2003 - PNG postaje međunarodni standard (ISO/IEC 15948:2003). Ova verzija PNG-a samo se malo razlikuje od verzije 1.2 i ne dodaje nove dijelove.
  • 3.3.2004 - ISO/IEC 15948:2004[2]

Tehnički podaci[uredi VE | uredi]

Zaglavlje (header)[uredi VE | uredi]

PNG datoteka počinje 8-byte-nim potpisom. Heksadekadske byte vrijednosti su 89 50 4E 47 0D 0A 1A 0A. Svaki od zaglavnih byte-ova ima svoju svrhu[3]:

Byte Svrha
89 Ima postavljen bit veće vrijednosti da bi se prepoznalo sustav koji ne podržava 8 bit-ne podatke i da smanji mogućnost da tekstualna datoteka bude slučajno zamjenjena za PNG datoteku, ili obrnuto
50 4E 47 U ASCII-ju, slova "PNG", omogućava da osoba lako prepozna format ukoliko se gleda u tekstualnom editoru.
0D 0A Završetak linije u DOS-u (CRLF) kako bi se prepoznalo DOS-UNIX završetak konverzije podataka.
1A Byte koji zaustavlja prikaz datoteke pod DOS-om u slučaju da se koristi naredba TYPE
0A Unix Završetak linije (LF) kako bi se prepoznalo DOS-UNIX završetak konverzije.

"Komadi" (eng. "chunks") sadržani u datoteci[uredi VE | uredi]

Nakon zaglavlja dolazi niz komada, od kojih svaki sadrži određene informacije o slici. Komadi se označuju kao obavezni, ili kao pomoćni i ukoliko program naiđe na pomoćan komad koji ne prepoznaje, može ga jednostavno zanemariti. Ovakva struktura, zasnovana na komadima (chunks), osmišljena je kako bi omogućila PNG formatu dodatan razvoj, u isto vrijeme zadržavajući kompatibilnost sa starijim verzijama.

Svaki komad ima uzglavlje koje naznačuje veličinu i vrstu komada. Odmah nakon toga slijede pravi podaci, te "checksum" podataka. Komadi se imenuju imenima od 4 slova određene veličine (eng. "case sensitive"). Veličina svakog od slova daje određenu informaciju dekoderu o namjeni komada koje ne prepoznaje.

Veličina prvog slova označava je li komad obavezan ili ne. Ukoliko je prvo slovo veliko, komad je obavezan. Ako nije, komad je pomoćan. Obavezni komadi sadržavaju informacije potrebne za čitanje datoteke. Ako dekoder naiđe na obavezan komad koji ne prepoznaje, mora obustaviti čitanje datoteke.

Veličina drugog slova označava je li komad javan [eng. "public"] (definiran u specifikaciji ili zapisniku - 'eng. "registry"' javnih komada posebne namjene), ili privatan [eng. "private"] (nije standardiziran). Veliko slovo znači javan, malo znači privatan. Ovo osigurava da javna i privatna imena komada ne dolaze u sukob.

Treće slovo mora biti veliko da bi zadovoljavalo PNG specifikaciju. Namjenjeno je budućim proširenjima.

Veličina četvrtog slova označava da li se komad smije kopirati od strane editora koji ga ne prepoznaju. U slučaju malog slova, komad se smije kopirati neovisno o količini izmjena datoteke. U slučaju velikog slova, smije se kopirati jedino ako se promjene ne odnose na bilo koje obavezne komade.

Obavezni komadi[uredi VE | uredi]

Dekoder ih mora biti u mogućnosti tumačiti kako bi pročitao i renderirao PNG datoteku.

  • IHDR mora biti prvi komad, sadrži zaglalje.
  • PLTE sadrži paletu; popis korištenih boja.
  • IDAT sadrži sliku, koja može biti podjeljena na više IDAT komada. Čineći to, veličina datoteka se malo poveća, ali se dobiva mogućnost sa se PNG stvara korištenjem toka (eng. "stream").
  • IEND označava kraj slike.

Komadi s meta-podacima[uredi VE | uredi]

Ostala svojstva (eng. "atributes") koja mogu biti pohranjena u PNG datoteku uključuju gamma vrijednosti, pozadinsku boju, i tekstualne metadata informacije. PNG također podržava upravljanje bojama (color management) kroz primjenu ICC color space profila.

  • bKGD daje standardnu (eng. "default") pozadinsku boju. Namjenjena je korištenju u slučaju gdje nema boljeg izbora, npr. u samostalnim preglednicima slika (ali ne i web preglednicima).
  • cHRM daje white balance.
  • gAMA naznačava gammu.
  • hIST može sadržavati histogram, ili sveukupnu količinu svake boje u slici.
  • iCCP je ICC profil boja.
  • iTXt sadrži međunarodni (UTF-8) tekst, koji može biti sažet (komprimiran).
  • pHYs sadrži predviđenu veličinu piksela i/ili omjere (eng. "aspect ratio") slike.
  • sBIT (značajni bitovi) naznačava točnost boja izvora podataka.
  • sPLT sugerira paletu ukoliko je nedostupan pun raspon boja.
  • sRGB označava korištenje standardnog sRGB color space-a.
  • tEXt može pohranitit tekst koji može biti prezentiran ISO 8859-1-om, s jednim ime=vrijednost za svaki komad .
  • tIME sadržava vrijeme zadnje promjene na slici.
  • tRNS koristi informacije o prozirnosti. Za indeksirane slike, sadržava alpha kanalne vrijednosti za jednu ili više sadržanih paleta. Za truecolor slike i sivo-tonske (eng. "greyscale") slike , sadrži vrijednost pojedinog piksela koji bi trebalo smatrati posve prozirnim.
  • zTXt sadrži kompresirani tekst s istim ograničenjima kao i tEXt.

Malo prvo slovo kod ovih komada označava da nisu obavezni za PNG specifikaciju. Zadnje, malo slovo kod nekih komada, označava da ih se može kopirati, čak i ako ih aplikacija ne prepoznaje.

Dubina boja[uredi VE | uredi]

PNG opcije boja
Tip slike Tip
boja
Bitovna dubina po kanalu
1 2 4 8 16
indexed 3 da da da da Ne
sivi tonovi 0 da da da da da
sivi tonovi i alfa 4 Ne Ne Ne da da
truecolor 2 Ne Ne Ne da da
truecolor i alfa 6 Ne Ne Ne da da

PNG slike mogu koristiti boju zabilježenu u paleti ili biti sastavljene od jednog ili više kanala (numeričke vrijednosti izravno predstavljaju vrijednosti piksela). Iako PNG specifikacija uvijek govori o "bitovnoj dubini" boja kanala, većina software-a i korisnika obično govori o sveukupnom broju bitova po pikselu (eng. "bitdepth" ili "color depth")

Broj kanala ovisi o tome da li je slika sivih tonova (greyscale) ili u boji i da li ima alfa kanal. PNG dopušta sljedeće kombinacije kanala:

  • sivi tonovi
  • sivi tonovi i alfa (nivo transparentnost svakog piksela)
  • crvena, zelena i plava (rgb/truecolor)
  • crvena, zelena i plava, te alfa

S indeksiranim bojama, paleta se uvijek pohranjuje u 8 bit-noj dubini boja po kanalu. Paleta ne smije imati više unosa no što dopušta dubina boja slike, ali može imati manje (npr. ako slika koristi samo 90 boja, nema potrebe za paletom raspona svih 265 boja).

PNG-ovi s indeksiranim bojama mogu, po standardu, imati 1, 2, 4 ili 8 bita po pikselu; sivo-tonske slike bez alfa kanala dopuštaju 1, 2, 4, 8 ili 16 bita po pikselu. Sve ostalo koristi dubinu boja po kanalu od 8, ili 16 bita. Kombinacije koje su ovime omogućene, su prikazane u tablici iznad. Standard zahtjeva od dekodera da mogu čitati sve podržane formate boja, ali mnogi od njih, ipak, mogu proizvesti samo manji dio njih.

Prozirnost slike[uredi VE | uredi]

PNG nudi mnoštvo opcija u vezi prozirnosti (transparentnosti). Kod truecolor i sivo-tonskih slika, jedna boja može biti označena kao prozirna (dakle, svaki piksel ove "boje" prikazuje se kao potpuno, 100% proziran) ili se može dodati alfa kanal (više razina transparentnosti za svaki pojedini piksel, neovisno o njegovoj boji - kao na slici primjeru). Kod slika koje koriste paletu, alfa vrijednosti mogu se dodati u paletu. Broj tih pohranjenih vrijednosti može biti manji od ukupnog broja unosa u paletu. U tom slučaju preostali unosi smatraju se neprozirnima (prozirnost 0%).

Izvori[uredi VE | uredi]

  1. http://web-building.crispen.org/formats/png.html
  2. http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=29581&scopelist=PROGRAMME
  3. http://www.libpng.org/pub/png/spec/1.1/PNG-Rationale.html#R.PNG-file-signature