PNG (formatas)

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Peršokti į: navigaciją, paiešką
PNG transparency demonstration 1.png
Permatomumo demonstracija

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

PNG palaiko paletėmis paremtus 24 bitų (RGB (angl. Red Green Blue (liet. Raudona Žalia Mėlyna) spalvų paletės), 32 bitų RGBA ir juodai baltus (angl. Greyscale) vaizdus. PNG buvo sukurtas paveikslėliams kelti į internetą, ne profesionaliai grafikai, tad 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[taisyti | redaguoti kodą]

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[1]. Po jų rašomi segmentai (angl. chunks) 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[taisyti | redaguoti kodą]

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[taisyti | redaguoti kodą]

Š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[taisyti | redaguoti kodą]

Simboliai Šešioliktainė išraiška Reikšmė
0-7 84 59 4E 47 0D 0A 1A 0A (ANSI) ?PNG????
8-11 00 00 00 0D (32 bitų sk.) 13 (IHDR dydis)
12-15 49 48 44 52 (ANSI) IHDR
16-23 00 00 01 00 00 00 01 00 (32 bitų sk.) 256 256
24 08 8 bitai (simbolis) vienam taškui kiekviename kanale
25 06 Spalvų tipas - 6 (RGBA)
26 00 Įprastas suspaudimas
27 00 Jokio filtro
28 00 Be „pynimo“
29-32 5C 72 A8 66 (CRC)
33-36 00 00 00 01 (32 bitų sk.) 1
37-40 73 52 47 42 (ANSI) sRGB (neaiškus segmentas; tikriausiai specifinis GIMP programai)
41 00 sRGB turinys
42-45 AE CE 1C E9 (CRC)
46-49 00 00 02 38 (32 bitų sk.) 568 (IDAT ilgis)
50-53 49 44 41 54 (ANSI) IDAT
54-621 (daug simbolių) suspaustas paveikslėlis
622-625 CE F5 7B 90 (CRC)
626-629 00 00 00 00 (32 bitų sk.) 0 (IEND ilgis)
630-363 49 45 4E 44 (ANSI) IEND
634-637 AE 42 60 82 (CRC)

Šaltiniai[taisyti | redaguoti kodą]

  1. PNG (Portable Network Graphics) Specification, Version 1.1–12. Appendix: Rationale

Nuorodos[taisyti | redaguoti kodą]