PNG: diferència entre les revisions

Contingut suprimit Contingut afegit
Hi havia un 0D repetit, era contradictori als altres llocs que hi ha informació de la capçalera
m neteja i estandardització de codi
Línia 19:
| magic = <tt>89 50 4e 47 0d 0a 1a 0a</tt>
}}
'''PNG''' (acrònim de '''Portable Network Graphics''', pronunciat '''ping''') és un format gràfic basat en un algoritme de compressió sense pèrdua per bitmaps no subjecte a patents. Aquest format va ser desenvolupat en bona part per solucionar les deficiències del format [[GIF]] i permet emmagatzemar imatges amb una major profunditat de contrast i altres dades importants.
 
Les imatges PNG utilitzen l’extensió .png i han obtingut un tipus MIME (imatge/png) aprovat el 14 d’octubre de 1996.
 
==Història i desenvolupament==
Les motivacions per crear el format PNG es van generar el 1995, després que la companyia [[Unisys]] anunciés que faria complir la patent de software de l’algoritme de [[compressió de dades LZW]] utilitzat pel [[GIF]] (patent d’[[Estats Units]] 4.558.302 i altres en la resta del món). Hi havia altres problemes amb el format GIF que feien desitjable un canvi, per exemple la seva limitació a paletes de 8 bits de 256 colors com a màxim, quan els ordinadors ja suportaven milers o milions de colors.
 
Originalment PNG era un [[acrònim]] recursiu que significava PNG no és GIF (PNG’s Not GIF), fent al·lusió a la tradició de sigles recursives de [[GNU]]. Encara que GIF suporti [[animació]], el PNG va desenvolupar-se com un format d’imatge estàtic i es va crear el format [[MNG]] com la seva variant animada.
Les motivacions per crear el format PNG es van generar el 1995, després que la companyia [[Unisys]] anunciés que faria complir la patent de software de l’algoritme de [[compressió de dades LZW]] utilitzat pel [[GIF]] (patent d’[[Estats Units]] 4.558.302 i altres en la resta del món). Hi havia altres problemes amb el format GIF que feien desitjable un canvi, per exemple la seva limitació a paletes de 8 bits de 256 colors com a màxim, quan els ordinadors ja suportaven milers o milions de colors.
 
Originalment PNG era un [[acrònim]] recursiu que significava PNG no és GIF (PNG’s Not GIF), fent al·lusió a la tradició de sigles recursives de [[GNU]]. Encara que GIF suporti [[animació]], el PNG va desenvolupar-se com un format d’imatge estàtic i es va crear el format [[MNG]] com la seva variant animada.
 
El PNG va guanyar més popularitat l’agost de 1999 quan Unisys va posar fi a la seva política de llicenciats de patents lliures de drets pels desenvolupadors de programari lliure o no comercial.
* L’especificació de la versió 1.0 de PNG va ser llançada l’1 de juliol de 1996 i després va aparèixer com [[RFC 2083]]. Ràpidament s va convertir en una recomanació [[W3C]] l’1 d’octubre de 1996.
* La versió 1.1 amb alguns petits canvis i amb 3 noves extensions o “chunks” va ser alliberada el 31 de desembre de 1998.
* La versió 1.2. Nova extensió. Va ser alliberada l’11 d’agost de 1999.
* Nova versió, lleugerament diferent a la de l’anterior i amb una nova extensió. Actualment PNG és un estàndard internacional ([[ISO/IEC]] 15940:2003), també recomanat per la W3C el 10 de novembre de 2003.
* L’estàndard a partir de 2004 és (ISO/IEC 15948:2004).
 
==Detalls tècnics ==
Un arxiu PNG comença com una firma de 8 bytes, els valors en hexadecimals són: 89 50 4E 47 0D 0A 1A 0A, els valors decimals són: 137 80 78 71 13 10 26 10; cada valor és allí per una raó específica.
 
Un arxiu PNG comença com una firma de 8 bytes, els valors en hexadecimals són: 89 50 4E 47 0D 0A 1A 0A, els valors decimals són: 137 80 78 71 13 10 26 10; cada valor és allí per una raó específica.
 
{| class="wikitable"
Linha 56 ⟶ 54:
 
==Segments de l’arxiu==
Després de l’encapçalament es troben una sèrie de segments dels quals cada un guarda certa informació sobre la imatge. Els segments s’auto declaren com crítics (critical) o auxiliars (ancillary) de manera que un programa que troba un segment auxiliar i no l’entén pot ignorar-lo sense perill. L’estructura basada en segments està dissenyada per poder ampliar el format PNG mantenint la compatibilitat amb versions antigues.
 
Cada una de les seccions té un encapçalament que especifica la seva mida i tipus, immediatament seguit de les dades i els [[checksum]] de les dades. Les seccions tenen un nom de 4 lletres que és sensible a les majúscules. L’ús de majúscules o minúscules en el nombre esmentat prové dels descodificadors d’informació sobre les seccions que no són reconegudes.
Després de l’encapçalament es troben una sèrie de segments dels quals cada un guarda certa informació sobre la imatge. Els segments s’auto declaren com crítics (critical) o auxiliars (ancillary) de manera que un programa que troba un segment auxiliar i no l’entén pot ignorar-lo sense perill. L’estructura basada en segments està dissenyada per poder ampliar el format PNG mantenint la compatibilitat amb versions antigues.
Si la primera lletra és majúscula indica que la secció és essencial, en cas contrari serà auxiliar. Les seccions essencials són necessàries per llegir el fitxer, si el descodificador troba una secció essencial que no reconeix ha d’avortar la lectura.
Cada una de les seccions té un encapçalament que especifica la seva mida i tipus, immediatament seguit de les dades i els [[checksum]] de les dades. Les seccions tenen un nom de 4 lletres que és sensible a les majúscules. L’ús de majúscules o minúscules en el nombre esmentat prové dels descodificadors d’informació sobre les seccions que no són reconegudes.
SiEn el cas que la primerasegona lletra éssigui majúscula, indicasignificarà que la secció és essencial,pública en casespecificació contrario seràel auxiliar.registre Lesde seccions essencialsper sónpropòsits necessàriesespecials, peren llegircas elcontrari fitxer,serà siprivada el(no descodificadorestandarditzada). trobaAquest unaús seccióde essencialmajúscules i minúscules assegura que nomai reconeixhi hahagi d’avortarconflictes laentres lectura.seccions públiques i privades.
La tercera lletra ha d’estar en majúscules per complir les especificacions de PNG i està reservada per futures expansions.
En el cas que la segona lletra sigui majúscula, significarà que la secció és pública en especificació o el registre de seccions per propòsits especials, en cas contrari serà privada (no estandarditzada). Aquest ús de majúscules i minúscules assegura que mai hi hagi conflictes entres seccions públiques i privades.
La quarta lletra indica si és segur copiar la secció en cas que no sigui reconeguda, en cas d’estar en minúscules és segur copiar la secció sense importar la quantitat de modificació que hagi sofert el fitxer, si és majúscula s’haurà de copiar si no hi ha seccions crítiques que hagin sofert modificacions.
La tercera lletra ha d’estar en majúscules per complir les especificacions de PNG i està reservada per futures expansions.
La quarta lletra indica si és segur copiar la secció en cas que no sigui reconeguda, en cas d’estar en minúscules és segur copiar la secció sense importar la quantitat de modificació que hagi sofert el fitxer, si és majúscula s’haurà de copiar si no hi ha seccions crítiques que hagin sofert modificacions.
 
==Seccions essencials==
 
Un descodificador ha de ser capaç d’entendre aquestes seccions per llegir i [[renderitzar]] un PNG:
* IHDR, ha de ser la primera secció, contenent l’encapçalament.
* PLTE, conté la paleta (llista de colors).
* IDAT, conté la imatge que ha de ser dividida en múltiples seccions IDAT, fent això s’incrementa la mida de la imatge lleugerament però fa possible generar imatges PNG en [[streaming]].
* IEND, marca el final de la imatge.
 
==Seccions de metadades==
 
Altres atributs que poden ser guardats en una imatge PNG són: valors de gamma, color de fons i la informació textual. PNG també suporta correcció de color amb l’ús de sistemes de maneig del color com [[sRGB]].
* bKGD: conté el color de fons per defecte, s’utilitza quan no hi ha millor color disponible per mostrar, com en un visor d’imatges però en un navegador.
* cHRM: balanç de blanc
* gAMA: especifica la gamma
* hIST: guarda l’histograma o quantitat total de cada color en la imatge.
* iCCP: perfil ICC de color
* iTXt: conté text [[(UTF-8)]] comprimit o no
* pHYs: conté la mida prevista del píxel i/o la ràtio de la imatge.
* sBIT: (bits significatius) indiquen l’exactitud dels colors en la imatge.
* sPLT: suggereix una paleta per utilitzar en cas que el rang complet de colors no estigui disponible.
* sRGB: indica que s’utilitza l’estàndard sRBG color space.
* tWXt: emmagatzema text que pot ser representat en [[ISO 8859-1]] amb un nombre = valor per cada secció
* tIME: emmagatzema la data de l’última modificació.
* tRNS: conté informació sobre la transparència. Per imatges indexades emmagatzema el canal alpha per una o més paletes per imatges en color real i escala de grisos emmagatzema la informació d'un sol píxel que és considerat completament transparent.
* zTXt: conté text comprimit amb els mateixos límits que tEXt.
La primera lletra en minúscules d’aquestes seccions indiquen que no són necessàries en l’especificació de PNG, L’última lletra en minúscula indica que és segur copiar-les inclús si l’aplicació en qüestió no la té.
Altres atributs que poden ser emmagatzemats en un PNG inclouen valors de [[correcció gamma]], color de fons i [[metadades]]. PNG a més, també utilitza la correcció de color que utilitzen els sistemes d’administració de color com el [[sRGB]]. Alguns programes com [[Adobe Photshop]] disposen d’aquest sistema.
 
==Profunditat de color==
Les imatges en format PNG poden ser imatges de paleta indexada o estar formades per un o diversos [[Canal (comunicació)|canal]]s. Si existeix més d'un canal, tots els canals tenen el mateix nombre de bits per píxel (també anomenat profunditat de bits per canal). Encara en l’[[especificació oficial]] del PNG es nombra la profunditat de bits per canal, normalment els programes d’edició nombren només la quantitat total dels bits per píxel, és a dir, la [[profunditat de color]].
 
Les imatges en format PNG poden ser imatges de paleta indexada o estar formades per un o diversos [[Canal (comunicació)|canal]]s. Si existeix més d'un canal, tots els canals tenen el mateix nombre de bits per píxel (també anomenat profunditat de bits per canal). Encara en l’[[especificació oficial]] del PNG es nombra la profunditat de bits per canal, normalment els programes d’edició nombren només la quantitat total dels bits per píxel, és a dir, la [[profunditat de color]].
El nombre de canals depèn de si la imatge és en escala de grisos o en color i si disposa de canal alfa (també anomenat canal de transparència). Les combinacions permeses per PNG són:
* Escala de grisos (1 canal).
* Escala de grisos i canal alfa (2 canals).
* Canals vermell, verd i blau ([[Model de color RGB|RGB]], 3 canals, també anomenat [[color vertader o Truecolor]].).
* Canals vermell, verd, blau i alfa (RGB + alfa, 4 canals).
D’altra banda, les [[imatges indexades]] disposen d'un màxim de 256 colors. Aquesta paleta de colors està emmagatzemada amb una profunditat de canal de 8 bits. La paleta no pot tenir més colors que els marcadors per la profunditat de bits, és a dir 2<sup>8</sup>=256 colors, encara que en pot tenir menys (per exemple, una imatge de 50 colors només emmagatzemarà 50 entrada, evitant emmagatzemar dades que no són utilitzades.
 
==Transparència en la imatge==
 
PNG ofereix una gran varietat d’opcions de transparència: amb el [[color vertader]] o escala de grisos, inclús un sol píxel pot ser declarat transparent o pot afegir-se un canal alfa. Per imatges que utilitzen paletes es poden afegir un canal alfa a les entrades de la paleta. El nombre dels valors esmentats emmagatzemats pot ser menor que el total d’entrades de la paleta, de manera que la resta de les entrades es consideraran completament opaques. La recerca de píxels amb transparència binaria hauria de fer-se abans de qualsevol reducció de color per evitar que alguns píxels es converteixin en transparents accidentalment.
A diferència de la transparència oferta per [[GIF]] que només pot prendre 2 valors (completament transparent o completament opac), el canal alfa de PNG permet utilitzar major profunditat de bits per aconseguir efectes de semí-transparència, propis d’objectes translúcids. Per exemple, amb una profunditat de 8 bits per transparències es poden aconseguir 28 = 256 graus de transparència, com si es tractés d'un color.
 
==Compressió==
El mètode de [[compressió]] utilitzat pel PNG és conegut com a [[deflació]] (a l’anglès “[[Algorisme de deflació|Deflate algorithm]]”). També existeixen mètodes de filtratge. En les especificacions de 1’2 es defineix un únic tipus de filtre que inclou 5 modes de predicció del valor del píxel que resulta molt útil de resta al color del píxel actual, el color pronosticat. Els cinc mètodes són None, Sub, Up, Average i Paeth.
 
El mètode de [[compressió]] utilitzat pel PNG és conegut com a [[deflació]] (a l’anglès “[[Algorisme de deflació|Deflate algorithm]]”). També existeixen mètodes de filtratge. En les especificacions de 1’2 es defineix un únic tipus de filtre que inclou 5 modes de predicció del valor del píxel que resulta molt útil de resta al color del píxel actual, el color pronosticat. Els cinc mètodes són None, Sub, Up, Average i Paeth.
Aquests filtres poden reduir notablement la mida final de l’arxiu, encara que depèn en gran manera de la imatge d’entrada. L’algoritme de compressió pot encarregar-se de l'adequada elecció de mètodes que ofereixin major reducció.
El tipus de media [[MIME]] per PNG és “imatge/png” (aprovat el 14 d’octubre de 1996).
 
==Animació==
 
[[APNG]] és un format basat en PNG que suporta animació. APNG suporta el visionat d'una sola imatge en cas que el descodificador no entengui aquest format. És acceptat per Firefox i té extensió .png. [[MNG]] és un format d’imatge que suporta animació i està basat en les idees i en algunes seccions de PNG, però és un sistema complex i no permet el visionat d'una sola imatge, cosa que si que fa GIF i APNG.
 
==Comparació tècnica amb altres formats==
 
===Comparació amb GIF===
* En la majoria dels casos PNG comprimeix millor que el format GIF, encara que algunes implementacions (vegis [[Photoshop]]) realitzen una mala selecció dels mètodes de filtratge i es generen fitxers de major mida.
 
* El PNG admet, com el GIF, [[imatges indexades]] amb transparència d’1 bit o “binaria”. Aquest tipus de transparència no requereix un canal addicional i únicament admet que un color de la paleta aparegui transparent al 100%.
* En la majoria dels casos PNG comprimeix millor que el format GIF, encara que algunes implementacions (vegis [[Photoshop]]) realitzen una mala selecció dels mètodes de filtratge i es generen fitxers de major mida.
* El PNG admet, com el GIF, [[imatges indexades]] amb transparència d’1 bit o “binaria”. Aquest tipus de transparència no requereix un canal addicional i únicament admet que un color de la paleta aparegui transparent al 100%.
* El PNG admet formats amb una profunditat de color de milions de colors ([[color vertader]]) i [[canal alfa]], que proporcionen uns rangs de color molt més rics i precisos que el GIF i disposen de valors de transparència intermèdia. Lamentablement, això permet que es compari de forma errònia els PNG de color vertader com els GIF de color indexat (256 colors).
* GIF suporta animació i PNG no.
 
===Comparació amb JPG===
 
PNG I [[JPEG]] són formats que estan dissenyats per funcions diferents, així que només se'n pot realitzar una comparació generalista:
* JPEG té una relació de compressió enorme en perjudici de la qualitat de la imatge, ideal per imatges de mida gran i fotografies. No admet transparència.
* PNG és un format sense pèrdua de qualitat amb un excel·lent compressió, ideal per imatges formades per grans àrees de color pla o amb poques variacions de color. Admet canal alfa i alguns atributs extra com la correcció gamma. Tot i així, no admet mode CMYK, així que no és del tot útil per dissenys d’impressió.
 
==PNG a la web==
Tot i que les característiques tècniques i de compressió fan del PNG un format ideal per substituir GIF, la seva adopció ha estat molt lenta degut en part a comparacions errònies i algunes desavantatges tècniques.
 
Tot i que les característiques tècniques i de compressió fan del PNG un format ideal per substituir GIF, la seva adopció ha estat molt lenta degut en part a comparacions errònies i algunes desavantatges tècniques.
No està suportat per alguns navegadors molt vells (tot i que aquests navegadors són molt estranys avui en dia).
* L'administració de color fallava en alguns navegadors (actualment no és molt important i es pot evitar).
 
==Falses creences==
 
* “[[Internet Explorer]] 6 no suporta imatges PNG transparents”. S’hauria de matisar un punt. Internet Explorer 6 i inferiors admeten transparències binàries com al [[GIF]], però fallen al mostrar imatges amb canal alfa. Això és degut al fet que el paquet que especifica el canal alfa és opcional ([[tRNS]]) segons l’especificació PNG, tot i així Internet Explorer 7 sí que els admet.
* “Les imatges en PNG pesen més que els GIF”- Altra vegada no és veritat. Aquesta falsa creença és deguda al fet que es compara amb PNGs mal codificats o de 32 bits amb GIFs de 256 colors.
 
== Problemes de colors ==
Algunes versions d’alguns [[navegadors web]] presenten els valors de correcció gamma inclús quan estan especificats en el PNG. Navegadors coneguts amb problemes de visualització PNG:
* Internet Explorer 5.5 i 6.
Linha 155 ⟶ 142:
 
== Referències ==
{{Referències}}
 
== Enllaços externs ==