PNG slika (.png)

W3C Standard

Portable Network Graphics (PNG) je slobodan format fajla rasterske grafike koji podržava kompresiju podataka bez gubitaka, indeksirane boje i promenljivu transparentnost alfa kanala.

Konvertujte PNG u JPG

Besplatan konvertor PNG u JPG u pregledaču. Konvertujte datoteke odmah na svom uređaju.

Kompresujte PNG na mreži

Privatno - datoteke nikada ne napuštaju vaš uređaj

Pregled i metapodaci

Operativni sistemi i analizatori datoteka identifikuju PNG datoteke proverom početnog binarnog niza bajtova:

Izaberite ili prevucite datoteke ovde

Privatno - datoteke nikada ne napuštaju vaš uređaj

ili nalepite Ctrl+V
Garancija privatnosti: bez prenosa podataka preko mreže 0 bajtova poslato spoljnim serverima. Sva obrada je izvršena lokalno u bezbednom okruženju vašeg pregledača.

Potpis zaglavlja na nivou bajtova (magični bajtovi)

Operativni sistemi i analizatori datoteka identifikuju PNG datoteke proverom početnog binarnog niza bajtova:

HEKSADECIMALNI POTPIS (OFFSET 0):

89 50 4E 47 0D 0A 1A 0A

ASCII REPREZENTACIJA: .PNG....

Standardizacija: W3C Preporuka (1996) / ISO/IEC 15948:2004

Tehničke specifikacije

Arhitektura kontejneraBinarni kontejner zasnovan na segmentima (chunk) sa CRC32 verifikacijom od 4 bajta po segmentu
KompresijaDeflate (LZ77 + Hafmanovo kodiranje) sa 5 prediktivnih filtera linija skeniranja (None, Sub, Up, Average, Paeth)
Bajtni redosled (Endianness)Big-Endian (redosled bajtova na mreži) za dužine segmenata, dimenzije i CRC vrednosti
Prostori bojasRGB, Display P3, Indeksirana paleta (1-8 bita), Tonovi sive (Grayscale), Prave boje (24/48-bitno)
Kanali i strukturaRGB + Alfa (Do 16 bita po kanalu / 64-bitni RGBA)
Maksimalne dimenzije2,147,483,647 x 2,147,483,647 piksela (4-bajtni celobrojni brojevi bez predznaka)
TransparentnostPromenljivi kanal alfa providnosti od 8 ili 16 bita
Strimovanje i progresivno učitavanjeAdam7 algoritam preplitanja u 7 prolaza omogućava progresivno prikazivanje 2D linija skeniranja

Tehnička matrica poređenja: PNG u odnosu na konkurente

Tehnički atributPNG (Trenutno)WebPAVIFJPEG
Tip kompresijeStrogo bez gubitaka (Deflate + 2D prediktivni filteri)Sa gubicima (VP8) i bez gubitaka (VP8L)Sa gubicima (AV1 intra) i bez gubitakaStrogo sa gubicima (Diskretna kosinusna transformacija)
Alfa transparentnostPotpuni 8-bitni / 16-bitni promenljivi alfa kanalPodržan 8-bitni alfa kanalPodržana 8-bitna / 10-bitna / 12-bitna alfaNema podrške za kanal transparentnosti
Veličina fajla (fotografije)Kod fotografija su često veće od formata sa gubicima; relativna veličina zavisi od slike i enkodera.Mogu biti manje od JPEG-a; rezultat zavisi od slike i enkodera.Mogu biti manje od JPEG-a; rezultat zavisi od slike i enkodera.Srednja osnovna vrednost
Veličina fajla (grafika/interfejs)Izuzetno kompaktno za snimke ekrana, linijsku grafiku i tekstOdličan režim bez gubitakaDobar, ali sporiji za kodiranjeLoš (stvara artefakte zvonjenja duž oštrih ivica)
Kompatibilnost sa pretraživačimaPodržavaju ga glavni pregledači; dostupnost zavisi od pregledača i verzije.Široka podrška u mnogim aktuelnim pregledačima; pokrivenost varira u zavisnosti od verzije i platforme.Podržan je u mnogim aktuelnim pregledačima; pokrivenost varira u zavisnosti od verzije i platforme.Široka podrška; dostupnost zavisi od proizvoda i verzije.

Uobičajeni režimi oštećenja i vodič za heksadecimalni oporavak

Preglednik slika prikazuje poruku 'Fatal error: Not a valid PNG file' ili ne uspeva da otvori fajl.

Osnovni uzrok: Prvih 8 bajtova je izmenjeno u ASCII režimu prenosa (pretvaranjem 0x0D 0x0A u 0x0A ili 0x0D 0x0D 0x0A).

Oporavak: Otvorite datoteku u heksadecimalnom uređivaču i proverite da li se prvih 8 bajtova poklapa sa nizom '89 50 4E 47 0D 0A 1A 0A'. Vraćanje ovih tačnih 8 bajtova zaglavlja često omogućava oporavak slike.

pngcheck prijavljuje 'CRC error in chunk IDAT' ili se slika učitava delimično sa oštećenim donjim linijama skeniranja.

Osnovni uzrok: Oštećenje bita u kompresovanom zlib toku podataka ili nevažeća CRC32 kontrolna suma u IDAT segmentu.

Oporavak: Koristite pngcheck -f ili uslužne programe za oporavak Deflate toka da ponovo izračunate važeće CRC32 vrednosti, ili dekomprujte preostale linije skeniranja do oštećenog bloka.

Slika se ispravno prikazuje u desktop preglednicima, ali ne uspeva u iOS aplikacijama.

Osnovni uzrok: iOS očekuje Apple-ov vlasnički CgBI format sa zamenjenim bajtovima, ili nestandardne segmente prostora boja.

Oporavak: Normalizujte sliku pomoću komande 'pngcrush -revert-iphone-optimizations' da biste vratili standardni W3C RGBA redosled.

Bezbednosna analiza i vektori napada parsera

PNG podržavaju mnogi operativni sistemi i aplikacije. Bezbednosni rizici uključuju iscrpljivanje memorije dekodera i zlonamerne pomoćne blokove.

Poznati vektori napada

  • Preveliki tEXt i zTXt segmenti metapodataka koji pokreću uskraćivanje usluge (DoS) usled nedostatka memorije (OOM) u dekoderima koji nisu u bezbednosnom okruženju (sandbox).
  • Ranjivosti prekoračenja baufera hipa (heap buffer overflow) u starijim izdanjima biblioteke libpng (npr. CVE-2015-8126 u funkciji png_set_PLTE).
  • Napad dekompresije poplavom piksela gde slika male veličine fajla sugeriše ogromne dimenzije (npr. 100.000 x 100.000 piksela).
  • Steganografska eksfiltracija koja sakriva šifrovani sadržaj u pomoćnim privatnim segmentima (npr. eXIf ili prilagođeni tipovi segmenata).

Najbolje prakse za zaštitu: Uvek proverite dimenzije slike pre alokacije bafera piksela u memoriji. Prilikom korisničkog otpremanja uklonite nebitne pomoćne segmente (eXIf, tEXt) pomoću alata za sanitizaciju koji bezbedno upravlja memorijom.

Istorijat i prekretnice

2004Međunarodno standardizovano kao ISO/IEC 15948.
1996PNG 1.0 objavljen kao W3C preporuka.
1995Kreiran na Usenet grupi comp.graphics kao otvorena zamena za GIF nakon sprovođenja naplate LZW patenta od strane kompanije Unisys.

Ključne prednosti

  • PNG koristi kompresiju bez gubitaka, pa kodiranje neizmenjene slike ne unosi gubitke kompresije; uređivanje ili konverzija boja ipak mogu promeniti vrednosti piksela.
  • Glatka 8-bitna alfa transparentnost omogućava čisto stapanje na složenim pozadinama.
  • Korekcija gama vrednosti i hromatski segmenti obezbeđuju dosledno renderovanje na različitim monitorima.

Tehnička ograničenja i nedostaci

  • Značajno veće veličine fajlova u poređenju sa modernim formatima sa gubicima kao što su WebP ili AVIF za fotografski sadržaj.
  • Nema izvornu animaciju u više kadrova u standardnom PNG formatu (zahteva APNG ekstenziju).
  • Visoka dubina bita (16 bita po kanalu) stvara ogromne nekompresovane memorijske baufere za dekodiranje.

Zanimljivosti

  • Osmobajtno prepoznatljivo zaglavlje posebno je osmišljeno da otkrije oštećenje završetaka redova CR/LF pri FTP prenosu.
  • Neslužbeni rekurzivni akronim za PNG bio je 'PNG's Not GIF'.
  • Apple koristi vlasnički CgBI segment u PNG fajlovima iOS aplikacija koji obrće RGBA u BGRA za direktno renderovanje na GPU-u.

Često postavljana tehnička pitanja

Zašto se veličina PNG datoteke ponekad poveća kada se sačuva u programu za uređivanje slika?

Različiti softverski paketi koriste različite nivoe Deflate kompresije i heuristike prediktivnih filtera za linije skeniranja. Programi poput Photoshopa često dodaju nekompresovane profile boja, XMP blokove metapodataka i neoptimizovane IDAT segmente. Namenski alati poput File2File.app Compressor-a ponovo procenjuju svih 5 filtera za linije skeniranja kako bi postigli najmanju veličinu datoteke.

Koja je razlika između PNG-8 i PNG-24?

PNG-8 koristi indeksiranu paletu boja sa do 256 boja (slično kao GIF), što proizvodi veoma male fajlove pogodne za jednostavne ikone. PNG-24 podržava 16,7 miliona boja (Truecolor 8 bita po kanalu), pri čemu PNG-32 dodaje 8-bitni kanal alfa transparentnosti.

Zašto PNG ima 5 prediktivnih filtera za linije skeniranja?

Deflate kompresuje ponovljene obrasce bajtova. Pošto se vrednosti piksela na fotografijama ili gradijentima menjaju postepeno, PNG filtrira svaku liniju skeniranja (None, Sub, Up, Average, Paeth) izračunavanjem razlika između susednih piksela. Time se podaci gradijenta pretvaraju u nizove bajtova bliskih nuli, koji se znatno bolje kompresuju Deflate algoritmom.

Da li PNG podržava CMYK prostore boja za komercijalnu štampu?

Ne. Zvanična W3C specifikacija za PNG namerno ograničava tipove boja na Grayscale, Indexed i RGB. Profesionalni procesi štampe koji zahtevaju CMYK moraju da koriste TIFF ili PDF formate.