PNG-
Laajennus | .PNG |
---|---|
MIME-tyyppi | image/png |
Allekirjoitus | 89 50 4E 47 0D 0A 1A 0A( heksa ) |
Kehittäjä | W3C |
Alkuperäinen versio | 1. st Lokakuu 1996 |
Formaatin tyyppi | matriisikuvan muoto häviötön |
Perustuen | Tyhjennä |
Vakio | ISO 15948 , W3C , IETF RFC 2083 |
ISO | 15948 |
Erittely | Avoin muoto |
Web-sivustot |
(en) www.libpng.org/pub/png (en) png-mng.sourceforge.net/pub/png |
Portable Network Graphics ( PNG ) on näyttö avoin ja digitaalisia kuvia , jotka on luotu korvaamaan muodossa GIF , tuolloin omistaja ja joiden pakkaus oli asetettu patenttia . PNG on formaatti kärsimättä erityisesti sovitetut kuvien julkaisemisen lukien yksinkertainen tasainen värejä.
Se on standardoitu ISO: lla (ISO / IEC 15948: 2004).
PNG on eritelmä Internetille ja W3C-suosituksen ja RFC: n aihe . Se luotiin kiertämään nykyistä lisenssiä GIF-muodossa, joka oli suosituin 1990-luvun lopulla, Unisys , joka omistaa kaksi patenttia algoritmeista, joita GIF- pakkaus käyttää, ja vaatinut rojalteja. PNG määritettiin sitten, mutta lisäämällä GIF: n ominaisuuksia.
PNG soveltuu erityisen hyvin verkkoon tarkoitettujen synteettisten kuvien , kuten grafiikan, kuvakkeiden , tekstiä edustavien kuvien (hyvä luettavuuden säilyttäminen) tai kaltevuuskuvien, tallentamiseen. PNG ylittää jatkuvasti GIF : n tiedostokoon pienennyksen (hyvin valitulla värimallilla) tai laadun (koska se ei rajoitu 256 väreihin ) suhteen.
PNG: n ominaisuuksien ansiosta se voi tallentaa valokuvia ilman tietojen menetystä tiedostokoon vahingoksi, joka on loogisesti paljon suurempi kuin valokuville tarkoitettujen tietojen menetysformaattien, kuten JPEG tai JPEG 2000, kustannuksella .
PNG: n avulla voit tallentaa pääasiassa rasterikuvia eri muodoissa :
Levittämisen jälkeen ennustava suodatin, joka sallii yleensä suurempia puristus voidaan saada , koko asia puristetaan ilman häviöitä jälkeen deflate algoritmia ( RFC 1951 ), yleensä zlib , mutta zopfli voidaan myös käyttää sovelluksia, kuten advpng.
Pikselin komponentit tai paletti merkintöjä annetaan joko RGB -muodossa (punainen, vihreä, sininen) tai RGBA muodossa (ylimääräinen alfa kanava läpikuultavuus). Tässä tapauksessa käytetään vielä 8 tai 16 bittiä per pikseli tai palettimerkintä, mikä tekee 16 bittiä harmaasävykuvalle, 32 bittiä todelliselle värikuvalle ja 64 bittiä 4-kanavaiselle kuvalle, joka on 16 bittiä kutakin.
Eri läpinäkyvyystasot määrittävän alfakanavan läsnäolo tekee siitä ihanteellisen verkkosivujen sävellykseen. Suurin osa selaimista käyttää tätä ominaisuutta hyvin .
Kun PNG-kuvassa käytetään enintään 256 väripalettia, on mahdollista käyttää yhtä väreistä läpinäkyvyyden takaamiseksi.
Tämä on sama käyttäytyminen kuin GIF- muodossa ja se toimii jopa Internet Explorer 6: n kanssa . Siksi web kuvia GIF -muodossa voidaan muuntaa tämän version PNG pelkäämättä ristiriidassa useimpien nykyisten selaimet (ensimmäisellä neljänneksellä 2006), ilman patenttia koskee (jäljempänä GIF patentti laski 2006 vuonna julkisuuteen ).
PNG, jota muuten rekursiivisesti kutsutaan PNG: n Ei GIF: ksi ( PNG ei ole GIF ), voi tehdä kaiken, mitä GIF voi tehdä ja paljon muuta, kuten läpikuultavuus . Liikkuvien kuvien tekemistä ei kuitenkaan ollut tarkoitus tehdä, mutta sen tekijät loivat johdannaisen MNG- muodon tätä tarkoitusta varten (katso myös APNG- muoto ).
Molemmat muodot voidaan lomittaa , mutta PNG käyttää Adam7- algoritmia, kun taas GIF näyttää tässä tapauksessa kuvan rivi riviltä.
" Pala " on suuri osa tiedostoa, informaation fragmentti, joka muodostaa kokonaisuuden. Tätä englanninkielistä termiä käytetään monissa multimediamuodoissa.
Tiedosto voi sisältää useita datapaloja IDATsekä palan PLTEkäytettävän palan , jos se on kuva, jonka värit on indeksoitu.
Tiedosto voi sisältää myös muita toissijaisia palasia, mukaan lukien tekstitiedot.
PNG alkaa allekirjoitus 8 tavua edustaa seuraava desimaaliarvoina 137 80 78 71 13 10 26 10tai heksadesimaalin 89 50 4E 47 0D 0A 1A 0A.
Loput tiedostosta on jaettu useisiin osiin, joiden pituus on erilainen, nimeltään palo.
Virallisia palasia on 18 , joista 4 on ensisijaisia ja 14 toissijaisia.
Paloina ovat merkitty (nimetty). Tauko on tärkeä nimet paloina . Kukin tarra on määritelty neljän peräkkäisen merkkiä, joka rajaa muistisääntö koodi , muodossa nelimerkkistä . Jokaisen palan kohdalla , jos nimen ensimmäinen kirjain on isolla, se on kriittinen osa , muuten se on apupala .
Tässä on taulukko eniten käytettyistä paloista (neljä pääosaa yläosassa):
Sukunimi | Kuvaus | Sisältää | Merkitys | Esiintyminen |
---|---|---|---|---|
IHDR |
Kuvan otsikko Tiedoston otsikko |
Kuvan leveys pikseleinä Kuvan |
Pakollinen | Allekirjoittamisen jälkeen PNG |
PLTE |
Kuva paletti paletti |
Väritaulukko | Valinnainen | Välillä IHDRja 1 s palanIDAT |
IDAT |
Kuvatiedot Tietolohko |
Kuvatiedot | Pakollinen | Välillä IHDRtai PLTEjaIEND |
IEND |
Kuvan traileri Tiedoston loppu |
ei mitään | Pakollinen | Lopuksi |
tIME |
Kuvan viimeisen muokkauksen ajan aikaleima |
Valinnainen | Missä tahansa | |
iTXt |
Kansainväliset tekstitiedot Kansainväliset tekstitiedot (ehkä pakattu zlib) |
Valinnainen | Missä tahansa | |
tEXt |
Tekstidata Pakkaamaton tekstitieto |
Valinnainen | Missä tahansa | |
zTXt |
Pakatut tekstitiedot Pakatut tekstitiedot (zlib) |
Valinnainen | Missä tahansa |
Kymmenen muuta toissijaista palaa ovat:
bKGD Taustaväri | pHYs Fyysiset pikselimitat |
cHRM Ensisijaiset värit ja valkoinen piste | sBIT Merkittävät bitit |
gAMA Gammakuva | sPLT Ehdotettu paletti |
hIST Kuvahistogrammi | sRGB Vakiona RGB-väriavaruus |
iCCP Sulautettu ICC-profiili | tRNS Läpinäkyvyys |
Muut palat voidaan myös määritellä. Ne ovat joko julkisia tai yksityisiä, mutta heidän on täytettävä nimisäännöt. Julkinen kimpale on oltava rekisteröity kanssa W3C , nimeämää viranomaista ISO / IEC .
Tässä ovat käytössä olevat julkiset palat :
dSIG Digitaalinen allekirjoitus | oFFs Offset-kuva |
eXIf Vaihdettava kuvamuoto (Exif) -profiili | pCAL Pikseliarvojen kalibrointi |
fRAc Fraktaalikuvan parametrit | sCAL Kuvakohteen fyysinen asteikko |
gIFg GIF-graafisen ohjauksen laajennus | sTER Stereokuvan ilmaisin |
gIFx GIF-sovelluksen laajennus |
Pala koostuu 4 osasta:
PITUUS | TYYPPI | DATAS | CRC |
---|---|---|---|
Tietojen pituus | Palan tyyppi | Tiedot, joiden pituus tavuina on määritelty LENGTH | Ohjaus |
4 tavua | 4 tavua | n tavua | 4 tavua |
PITUUS: Palan koko tavuina, vain sen tiedot. Emme ota huomioon kokoa, tyyppiä tai CRC: tä.
Tyyppi: nimi palan (esimerkiksi IHDR, IDAT, IENDjne).
DATAS: Palaa n tavun suuruiseen osaan (PITUUS).
CRC: 4 tarkistustavua, jotka on luotu seuraavalla algoritmilla:
fonction maj_crc((entier positif 4 octets) crc, (entier positif 1 octet) bloc(), (entier positif 4 octets) taille) //le premier argument, crc, lors du premier appel de cette fonction pour un chunk donné, doit être 0xffffffff (tous les bits à 1) //sinon, il doit s'agir de la valeur retournée par le précédent appel de cette fonction //le deuxième argument, bloc(), est une liste d'éléments d'un octet. Il s'agit de tout ou partie du chunk //le troisième argument, taille, est le nombre d'éléments de la liste bloc() (entier positif 4 octets) c, n, v c=crc pour n de 0 à (taille-1) //normalement, cette boucle ne contient qu'une seule instruction mais, ici, elle est subdivisée en quatre instructions. C'est plus lisible ainsi //il y a une itération de cette boucle pour chacun des octets de la partie DATA du chunk, dans l'ordre de leurs positions dans le chunk //xb=ou exclusif bit à bit v=c xb bloc(n) //eb=et bit à bit; tout nombre préfixé par 0x est en base 16 //on met à 0 les bits des trois premiers octets, vu que leur valeur ne dépend pas de celle de bloc(n) v=v eb 0xff //table_crc() est une liste de 256 constantes, des entiers codés sur quatre octets (voir ci-dessous) v=table_crc(v) //div=division entière c=v xb (c div 256) fin pour retourner c fin fonctionKun kaikki osat on skannattu, viimeisen maj_crc () -kutsun palauttama arvo ei ole crc: n arvo . jokaisen bitin arvo on edelleen käännettävä:
fonction validation_crc((entier positif 4 octets) crc) retourner (crc xb 0xffffffff) fin fonctionTable_crc () luettelo in maj_crc () sisältää vapaasti mutta laskettavissa arvoista. jotkut toteutukset luettelo nämä arvot (lasketaan sitten etukäteen) ja tallentavat ne suoraan muuttujaan, kun taas toiset sisältävät algoritmin (yleensä funktion) niiden laskemiseksi:
fonction calcul_table_crc() (entier positif 4 octets) c, i, j pour i de 0 à 255 c=i //8 itérations pour j de 0 à 7 //retourne 0 (faux) si c est pair et 1 (vrai) si c est impair (en dehors du dernier,tous les bits du résultat sont à 0) si (c eb 1) //la valeur 0xedb88320 (11101101 10111000 10001100 00100000 en binaire et 3 988 292 384 en décimal) est arbitraire //c étant, dans ce cas, nécessairement impair, c div 2 équivaut à (c-1)/2 c=0xedb88320 xb (c div 2) sinon c=c/2 fin si fin pour table_crc(i)=c fin pour fin fonctionKappaleesimerkki IHDRkoostuu seuraavista binaaritiedoista, jotka esitetään tässä heksadesimaaliluvussa:
00 00 00 0D 49 48 44 52 00 00 03
20 00 00 02 58 10 06 00 00 00 15
14 15 27
Nämä tiedot on tulkittava taulukon mukaisesti.
Tiedot (heksadesimaalilukuna) |
Kuvaus | Arvo (desimaalina) |
---|---|---|
00 00 00 0D | Tietojen pituus | 13 |
49 48 44 52 | Palan tyyppi / nimi | IHDR |
00 00 03 20 | Leveys | 800 |
00 00 02 58 | Korkeus | 600 |
10 | Terän syvyys | 16 |
06 | Värityyppi | 6 |
00 | Pakkausmenetelmä | 0 |
00 | Suodatusmenetelmä | 0 |
00 | Lomitusmenetelmä | 0 |
15 14 15 27 | CRC | 353637671 |
Kohdassa (ainoa mahdollinen PNG-muodossa) 0määritetty pakkausmenetelmä IHDRviittaa tyhjennys / täyttö pakkaamiseen . Pakkaus tehdään vain ositiedoille IDAT.
Pakkaus voidaan tehdä käyttämällä zlib- kirjastoa (C / C ++). CRC on myös mahdollista luoda tällä kirjastolla.
Muut muodot: