PNG slika (.png)
W3C StandardPortable 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:
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 0AASCII REPREZENTACIJA: .PNG....
Standardizacija: W3C Preporuka (1996) / ISO/IEC 15948:2004
Tehničke specifikacije
| Arhitektura kontejnera | Binarni kontejner zasnovan na segmentima (chunk) sa CRC32 verifikacijom od 4 bajta po segmentu |
| Kompresija | Deflate (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 boja | sRGB, Display P3, Indeksirana paleta (1-8 bita), Tonovi sive (Grayscale), Prave boje (24/48-bitno) |
| Kanali i struktura | RGB + Alfa (Do 16 bita po kanalu / 64-bitni RGBA) |
| Maksimalne dimenzije | 2,147,483,647 x 2,147,483,647 piksela (4-bajtni celobrojni brojevi bez predznaka) |
| Transparentnost | Promenljivi kanal alfa providnosti od 8 ili 16 bita |
| Strimovanje i progresivno učitavanje | Adam7 algoritam preplitanja u 7 prolaza omogućava progresivno prikazivanje 2D linija skeniranja |
Tehnička matrica poređenja: PNG u odnosu na konkurente
| Tehnički atribut | PNG (Trenutno) | WebP | AVIF | JPEG |
|---|---|---|---|---|
| Tip kompresije | Strogo bez gubitaka (Deflate + 2D prediktivni filteri) | Sa gubicima (VP8) i bez gubitaka (VP8L) | Sa gubicima (AV1 intra) i bez gubitaka | Strogo sa gubicima (Diskretna kosinusna transformacija) |
| Alfa transparentnost | Potpuni 8-bitni / 16-bitni promenljivi alfa kanal | Podržan 8-bitni alfa kanal | Podržana 8-bitna / 10-bitna / 12-bitna alfa | Nema 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 tekst | Odličan režim bez gubitaka | Dobar, ali sporiji za kodiranje | Loš (stvara artefakte zvonjenja duž oštrih ivica) |
| Kompatibilnost sa pretraživačima | Podrž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
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.
Povezani parovi konverzije za PNG
Pretvaranje PNG rasterskih slika u JPEG format smanjuje veličinu datoteke primenom kompresije sa gubicima, što omogućava brže učitavanje slika na veb lokacijama i zauzimanje manje prostora za skladištenje.
Pretvaranje JPEG rasterske slike sa gubicima u PNG rastersku sliku bez gubitaka sprečava dalje pogoršanje kvaliteta usled ponovljenog kodiranja i dodaje podršku za providnost alfa kanala.
Konverzija PNG-a u WebP može da smanji veličinu datoteke uz očuvanje transparentnosti; rezultat zavisi od toga da li se koristi kompresija sa gubicima ili bez njih i od sadržaja slike.
Konvertovanjem WebP-a u PNG dobija se statična slika za softver koji podržava PNG; animacija se ne čuva, a detalji izgubljeni u izvoru ne mogu se vratiti.
Konverzija HEIC-a u PNG pretvara fotografije kompresovane kodekom HEVC sa gubicima u široko podržane grafičke datoteke bez gubitaka.
Konvertovanjem SVG vektorskih datoteka u PNG rasterske slike skalabilna grafika zasnovana na kodu pretvara se u mrežu fiksnih piksela radi univerzalne kompatibilnosti sa aplikacijama.
Ugradite rasterske PNG slike unutar SVG XML vektorskog kontejnera radi prilagodljivog skaliranja na vebu i integracije u rasporede kompatibilne sa vektorima.
Konvertujte Adobe Photoshop PSD grafiku u PNG slike bez gubitaka sa potpunom transparentnošću alfa kanala direktno u vašem pretraživaču bez prenosa na server.