PNG (formatas)

PNG () – bitų masyvo formatas, kuris suglaudinamas „be nuostolių“. Sukurtas kaip GIF formato pakaitalas – formatas nereikalaujantis patento licencijos.

PNG palaiko paletėmis paremtus 24 bitų (RGB ( () spalvų paletės), 32 bitų RGBA ir juodai baltus () vaizdus. PNG buvo sukurtas paveikslėliams kelti į internetą,nepalaiko kitų spalvų erdvių (tokių kaip CMYK).

Formatas sukurtas, kai 1995 m. pradžioje paaiškėjo, kad LZW duomenų suglaudinimo algoritmas, naudotas GIF formate, buvo užpatentuotas kompanijos Unisys. Taip pat buvo ir kitų problemų susijusių su GIF formatu, kurios paskatino PNG kūrimą. Viena jų buvo 256 spalvų limitas, kada jau buvo paplitę kompiuteriai gebantys atvaizduoti žymiai daugiau nei 256 spalvas. Nors GIF palaiko animaciją, buvo nuspręsta, kad PNG turėtų būti „nejudantis“. Giminingas formatas MNG buvo sukurtas specialiai animacijai.

PNG naudoja nepatentuotą duomenų glaudinimo be nuostolių metodą žinomą kaip „deflate“ (zlib/gzlib).

Bylos struktūra 

Kiekviena PNG byla prasideda tokiais pat baitais 0x84; 0x59; 0x4e; 0x47; 0x0d; 0x0a; 0x1a; 0x0a. Tokia bylos pradžia rašoma tam, kad atidarant netinkamu režimu skaitymas būtų nutraukiamas. Po jų rašomi segmentai () iš kurių yra sudaryta likusi byla. Kiekvienas segmentas prasideda 32 bitų sveiku skaičiumi, nurodančiu segmento ilgį simboliais (simbolis yra du baitai; neįskaitant ilgio ir pavadinimo baitų). Po to rašomas segmento pavadinimas, pavyzdžiui, "IDAT" arba "tRNS". Po to, anksčiau nurodytas simbolių skaičius, sudaro segmento turinį. Segmentą užbaigia 8 CRC baitai ir prasideda naujas segmentas. Byla užbaigiama "IEND" segmentu.

Svarbiausi segmentai 

Be šių segmentų PNG negali veikti:
 IHDR - Šiame segmente nurodomas paveiksliuko aukštis, plotis, spalvos tipas, filtro tipas ir panašiai
 PLTE (jei nurodyta, kad naudojama paletė)
 IDAT - Šiame segmente laikomas suspaustas paveikslėlis
 IEND

Pagalbiniai segmentai 

Šie segmentai nurodo papildomą informaciją:
 bKGD
 cHRM
 gAMA
 hIST
 pHYs
 sBIT
 tEXt
 tIME
 tRNS
 zTXt
Tokių segmentų gali būti ir daugiau. Atidarantys algoritmai dažniausiai būna tolerantiški ir nežinomus segmentus praleidžia

Paprasto failo pavyzdys

Šaltiniai

Nuorodos 
 PNG oficiali svetainė

Failų formatai