PNG
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 slika s 8-bitnim transparentnim (prozirnim) kanalom | |
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 namijenjen 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 primjenjuje lossless kompresiju. PNG je stvoren kako bi poboljšao i zamijenio GIF format formatom koji ne treba patentiranu dozvolu (licenciju) za uporabu. 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 razmjenu preko interneta, a ne za profesionalnu uporabu, tako da ne primjenjuje neke druge sheme boja (kao što je CMYK (cyan-mangenta-yellow-black)).
PNG datoteke u pravilu uvijek rabe ekstenziju PNG
ili png
i dodijeljen im je MIME media type standard image/png
(odobren 14. listopada 1996.).
Povijest i razvoj
Potreba za stvaranjem PNG formata javila se rane 1995.,nakon što je Unisys najavio da će softverskim patentom zaštititi LZW kompresijski algoritam koji se primjenjuje 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, najvažnija 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 softvera.
- 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
Zaglavlje (header)
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 zamijenjena za PNG datoteku, ili obrnuto |
50 4E 47 | U ASCII-ju, slova "PNG", omogućava da osoba lako prepozna format ako se gleda u tekstnom 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 rabi naredba TYPE |
0A | Unix Završetak linije (LF) kako bi se prepoznalo DOS-UNIX završetak konverzije. |
"Komadi" (eng. "chunks") sadržani u datoteci
Nakon zaglavlja dolazi niz komada, od kojih svaki sadrži određene informacije o slici. Komadi se označuju kao obvezni, ili kao pomoćni i ako 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, istodobno 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 obvezan ili ne. Ako je prvo slovo veliko, komad je obvezan. Ako nije, komad je pomoćan. Obvezni komadi sadržavaju informacije potrebne za čitanje datoteke. Ako dekoder naiđe na obvezan 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. Namijenjeno 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 obvezne komade.
Obvezni komadi
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 primijenjenih 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 uporabom toka (eng. "stream").
- IEND označava kraj slike.
Komadi s meta-podacima
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. Namijenjena je uporabi 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 (važni, bitni bitovi) naznačava točnost boja izvora podataka.
- sPLT sugerira paletu ako je nedostupan pun raspon boja.
- sRGB označava uporabu 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 rabi 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 obvezni 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
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 upotrebljavati 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 softvera 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 upotrebljava 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 rabi 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
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 rabe 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
- ↑ Arhivirana kopija. Inačica izvorne stranice arhivirana 21. svibnja 2007. Pristupljeno 26. prosinca 2006. journal zahtijeva
|journal=
(pomoć)CS1 održavanje: arhivirana kopija u naslovu (link) - ↑ http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=29581&scopelist=PROGRAMME
- ↑ http://www.libpng.org/pub/png/spec/1.1/PNG-Rationale.html#R.PNG-file-signature