Portable Network Graphics

**Portable Network Graphics** (**PNG**) (sigles n'inglés de ***Gráficos de Rede Portátiles***, pronunciaes *"ping"*) ye un formatu gráficu basáu nun algoritmu de compresión ensin perda para bitmaps non suxetu a patentes. Esti formatu foi desenvueltu en bona parte p'arreglar los defectos del formatu GIF y dexa almacenar imáxenes con una mayor fondura de contraste y otros importantes datos.

Les imáxenes PNG usen la estensión **.png** y llograron un tipu MIME (**image/png**) aprobáu'l 14 d'ochobre de 1996.

## Detalles téunicos
Un archivu PNG empieza con una firma de 8 bytes, los valores n'hexadecimal son: 89 50 4Y 47 0D 0A 1A 0A, los valores decimales son: 137 80 78 71 13 10 26 10; cada valor ta ende por una razón específica.

## Segmentos del archivu
Dempués de la cabecera atopen una serie de segmentos de los cualos cada unu guarda cierta información alrodiu de la imaxe. Los segmentos s'autu declaren como críticos (*critical*) o auxiliares (*ancillary*) de cuenta que un programa qu'atope un segmentu auxiliar y nun lo entienda pue ignoralo ensin peligru. La estructura basada en segmentos ta diseñada pa poder ampliar el formatu PNG calteniendo la compatibilidá con versiones antigües.

Caúna de les seiciones tien una cabecera qu'específica'l so tamañu y tipu, darréu siguíu de los datos y el checksum de los datos. Les seiciones tienen un nome de 4 lletres que ye sensible a les mayúscules. L'usu de mayúscules o minúscules en dichu nome aprove a los decodificadores d'información alrodiu de les seiciones que nun son reconocíes.

Si la primer lletra ye mayúscula esto indica que la seición ye esencial, en casu contrariu va ser auxiliar. Les seiciones esenciales son necesaries pa lleer el ficheru, si'l decodificador atopa una seición esencial que nun reconoz tien d'albortar la llectura.

En casu de que la segunda lletra sía mayúscula esto va significar que la seición ye pública na especificación o'l rexistru de seiciones pa propósitos especiales, en casu contrariu va ser privada (non estandarizada). Esti usu de mayúscules y minúscules asegura que nunca haya conflictos ente seiciones públiques y privaes.

La tercer lletra tien de tar en mayúscules pa cumplir les especificaciones de PNG y ta acutada pa futures espansiones.

La cuarta lletra indica si ye seguro copiar la seición en casu de que nun sía reconocida, en casu de tar en minúscules ye seguro copiar la seición ensin importar la cantidá de cambéu que sufriera'l ficheru, si ye mayúscula solo van debese copiar si nun hai seiciones crítiques que sufrieren cambeos.

## Seiciones esenciales
Un decodificador tien de ser capaz d'entender estes seiciones pa lleer y renderizar un PNG:

* IHDR, ten de ser la primer seición, contién la cabecera.
* PLTE, contién la paleta (llista de colores).
* IDAT, contién la imaxe que tien de ser estremada en múltiples seiciones IDAT, faciendo esto amóntase'l tamañu de la imaxe llixeramente pero fai posible xenerar imáxenes PNG en streaming.
* IEND, marca'l final de la imaxe.

## Seiciones de metadatos
Otros atributos que pueden ser guardaos nuna imaxe PNG son: valores de gamma, color del fondu ya información testual. PNG tamién soporta correición de color col usu de sistemes de manexu del color como sRGB.

* bKGD: contién el color de fondu per defectu, úsase cuando nun hai un meyor color disponible p'amosar, como nun visor d'imáxenes pero non nun navegador web.
* cHRM: balance de blancu.
* gama: específica la gamma.
* hIST: guarda'l histograma o cantidá total de cada color na imaxe.
* iCCP: perfil ICC de color.
* iTXt: contién testu (UTF-8) estruyíu o non.
* pHYs: contién el tamañu previstu del píxel y/o'l ratio de la imaxe.
* sBIT: (bits significativos) indiquen la exactitú de los colores na imaxe.
* sPLT: suxer una paleta pa usar en casu de que'l rangu completu de colores nun tea disponible.
* sRGB: indica que s'usa l'estándar sRBG color space.
* tEXt: almacena testu que puede ser representáu en ISO 8859-1 con un nome=valor pa cada seición.
* time: almacena la fecha del últimu cambéu.
* tRNS: contién información sobre la tresparencia. Pa imáxenes indexadas almacena la canal alpha pa una o más paletes, pa imáxenes en color real y escala de grises almacena la información d'un solu píxel que tien de ser consideráu dafechu tresparente.
* zTXt: contién testu estruyíu colos mesmos llendes que tEXt.

La primer lletra en minúscules d'estes seiciones indica que nun son necesaries na especificación de PNG, la última lletra en minúscules indica que ye seguro copiales inclusive si l'aplicación en cuestión nun les entiende.

Otros atributos que pueden ser almacenaos nun PNG inclúin valores de correición gamma, color de fondu y metadatos. PNG amás tamién utiliza la correición de color qu'utilicen los sistemes d'alministración de color como'l sRGB. Dellos programes como Adobe Photoshop disponen d'esti sistema.

## Fondura de color
Les imáxenes en formatu PNG pueden ser imáxenes de paleta indexada o tar formaes por unu o delles canales. Si esiste más d'una canal, toles canales tienen el mesmu númberu de bits por píxel (tamién llamáu fondura de bits por canal). Anque na especificación oficial del PNG noma la fondura de bits per canal, de normal los programes d'edición nomen namái la cantidá total de bits por píxel, esto ye, la fondura de color. 

El númberu de canales depende de si la imaxe ye n'escala de grises o en color y si dispón de canal alfa (tamién llamada canal de tresparencia). La combinaciones dexaes por PNG son:

* Escala de grises (1 canal).
* Escala de grises y canal alfa (2 canales).
* Canales coloráu, verde y azul (RGB, 3 canales, tamién llamáu color verdaderu o Truecolor).
* Canales coloráu, verde, azul y alfa (RGB + alfa, 4 canales).

Per otra parte, les imáxenes indexadas disponen d'un tope de 256 colores a lo más. Esta paleta de colores ta almacenada con una fondura de canal de 8 bits. La paleta nun puede tener más colores que los marcaos pola fondura de bits, ye dicir 2⁸=256 colores, anque sí puede tener menos (por casu, una imaxe de 50 colores namái va almacenar 50 entraes, evitando almacenar datos que nun son utilizaos).

La tabla espuesta a la derecha indiquen la **fondura de color** pa cada formatu d'imaxe que soporta PNG. Ésta estrayer de la fondura de bits per canal y multiplícase pol númberu de canales. Los caxellos en colloráu representen combinaciones ensin soportar. L'estándar rique que los decodificadores puedan lleer tolos formatos disponibles, pero munchos editores d'imaxe namái pueden xenerar un pequeñu subconxuntu d'ellos.

## Tresparencia na imaxe
PNG ufierta una gran variedá d'opciones de tresparencia: con color verdaderu o escala de grises, inclusive un solu píxel pue ser declaráu tresparente o puede añader una canal alfa. Pa imáxenes qu'usen paletes puede añader una canal alfa nes entraes de la paleta. El númberu de dichos valores almacenaos pue ser menor que'l total d'entraes na paleta, de cuenta que'l restu de les entraes van considerase dafechu opaques. La busca de píxeles con tresparencia binaria tien de faese antes de cualquier amenorgamientu de color pa evitar que dellos píxeles convertir en tresparentes por fuercia.

A diferencia de la tresparencia ufiertada por GIF que namái puede tomar 2 valores (dafechu tresparente o dafechu opacu), la canal alfa de PNG dexa utilizar mayor fondura de bits pa llograr efeutos de semi-tresparencia, propios d'oxetos tresllúcíos. Por casu, con una fondura de 8 bits pa tresparencies pueden consiguise 2⁸ = 256 graos distintos de tresparencia, como si tratar d'un color.

## Compresión
El métodu de compresión utilizáu pol PNG ye conocíu como deflación (n'inglés "Deflate algorithm"). Tamién esisten métodos de peneráu. Na especificación 1.2 defínese un únicu tipu de filtru, qu'inclúi 5 maneres de predicción del valor del píxel, que resulta bien útil p'ameyorar la compresión, onde s'escueye pa cada llinia de la imaxe (scanline) un *métodu de peneráu* que prediz el color de cada píxel basándose nos colores de los píxeles previos y resta al color del píxel actual, el color agoráu. Los cinco métodos son: None, Sub, Up, Average y Paeth. 

Estos filtros pueden amenorgar notablemente'l tamañu final del archivu, anque depende en gran midida de la imaxe d'entrada. L'algoritmu de compresión puede encargase de la fayadiza eleición del métodu que mayor amenorgamientu ufierte.

El tipu de media MIME para PNG ye "image/png" (aprobáu'l 14 d'ochobre de 1996).

## Animación
APNG ye una estensión de PNG que soporta animación. Esti formatu soporta'l visionado d'una sola imaxe en casu de que'l decodificador nun entienda l'archivu. Ye aceptáu por múltiples navegadores y tien estensión *.png*. 

Per otru llau, MNG ye un formatu d'imaxe que soporta animación y ta basáu nes idees y en delles seiciones de PNG, pero ye un sistema complexu y nun dexa'l visionado d'una sola imaxe en casu de nun esistir soporte completu nel visualizador d'imáxenes pertinente.

## Comparanza téunica con otros formatos

### Comparanza con GIF
* Na mayoría de los casos, PNG estruyi meyor que'l formatu GIF, anque delles implementaciones (vease Photoshop) realicen una mala selección de los métodos de peneráu y xenérense ficheros de mayor tamañu.

* El PNG almiti, al igual que'l GIF, imáxenes indexadas con tresparencia de 1 bit o "binaria". Esti tipu de tresparencia nun riquir d'una canal adicional y namái almite qu'un color de la paleta apaeza tresparente al 100%. 

* El PNG almite formatos con una fondura de color de millones de colores (color verdaderu) y canal alfa, lo qu'apurre unos rangos de color muncho más ricos y precisos que'l GIF y disponer de valores de tresparencia entemedios. Lamentablemente, esto dexa que se compare de forma errónea los PNG de color verdaderu colos GIF de color indexado (256 colores).

* GIF soporta animación y PNG non. (ver seición d'animación).

### Comparanza con JPEG

PNG y JPEG son formatos que tán diseñaos pa funciones distintes, polo que namái se puede realizar una comparanza xeneralista:

* JPEG tien una rellación de compresión enorme en perxuiciu de la calidá de la imaxe, ideal pa imáxenes de gran tamañu y fotografíes. Nun almite tresparencia.

* PNG ye un formatu ensin perda calidable con una escelente compresión, ideal pa imáxenes formaes per grandes árees de color planu o con poques variaciones de color. Almite canal alfa y dellos atributos extra como la correición gamma. Sicasí, nun almite manera CMYK, polo que nun ye del tou útil pa diseños d'impresión.

## PNG na web
* Magar que les carauterístiques téuniques y de compresión faen de PNG un formatu ideal pa sustituyir a GIF, la so adopción foi bien lenta, debíu en parte a comparances errónees y delles desventaxes téuniques:
* Nun ta soportáu por dellos navegadores bien vieyos (tales navegadores, sicasí, entraron en desusu na primer década del sieglu XXI).
* l'alministración de color fallaba en dellos navegadores (fácilmente evitable pola razón anterior).

## Problemes de color
Delles versiones de dalgunos navegador web presenten los valores de correición gamma inclusive cuando nun tán especificaos nel PNG. Navegadores conocíos con problemes de visualización de PNG:

* Internet Explorer 5.5 y 6.
* Netscape 7.0 a 7.2.
* Opera (versiones anteriores a la 7.50).

L'efeutu final ye que'l color amosáu nel PNG nun coincide col esquema de color del restu de la páxina web. Una forma senciella d'evitar esto ye volviendo a codificar el PNG atayando ciertos atributos. Delles utilidaes pa tal fin:

* PNGOUT ye una utilidá gratuita de DOS qu'utiliza un algoritmu esclusivu pa recomprimir un PNG y amenorgar el tamañu del ficheru al mínimu, ensin perdes. 
* Superpng, ye un plugin gratuitu para Photoshop que dexa la optimización de ficheros PNG.
* OptiPNG ye una utilidá gratuita que recomprime un PNG, amenorgando'l so tamañu ensin perdes.

## Bibliografía
*  (Sacante les tapes, el llibru ta so llicencia GFDL)

## Referencies

## Enllaces esternos
* Sitiu web del formatu PNG (n'inglés)
* Páxina de la Web Consortium sobre PNG (n'inglés)
* libpng, biblioteca oficial en C (n'inglés)