Introducción a PNG y su Estructura
Introducción a PNG y su Estructura
Dados. Desarrollador PNG Development Group (donado a W3C) Informacin general Extensin de archivo Tipo de MIME Type code .png image/png PNGf PNG
Uniform Type Identifier [Link] Nmero mgico Lanzamiento inicial Tipo de formato Extendido a Estndar(es) Formato abierto 89 50 4e 47 0d 0a 1a 0a 1 de octubre de 1996 Grfico rasterizado comprimido sin prdidas APNG, JNG y MNG ISO 15948, IETF RFC 2083
PNG (siglas en ingls de Grficos de Red Porttiles, pronunciadas "ping") es un formato grfico basado en un algoritmo de compresin sin prdida para bitmaps no sujeto a patentes. Este formato fue desarrollado en buena parte para solventar las deficiencias del formato GIF y permite almacenar imgenes con una mayor profundidad de contraste y otros importantes datos. Las imgenes PNG usan la extensin .png y han obtenido un tipo MIME (image/png) aprobado el 14 de octubre de 1996.
Historia y desarrollo
Las motivaciones para crear el formato PNG se generaron en 1995, despus de que la compaa Unisys anunciara que hara cumplir la patente de software del algoritmo de compresin de datos LZW utilizado por el GIF (patente de Estados Unidos 4.558.302 y otras en el resto del mundo). Haba otros problemas con el formato GIF que hacan deseable un cambio, por ejemplo su limitacin a paletas de 8 bits de 256 colores como mximo, cuando los ordenadores ya soportaban miles o millones de colores. Originalmente PNG era un acrnimo recursivo que significaba PNG no es GIF (PNG's Not GIF), haciendo alusin a la tradicin de siglas recursivas de GNU. Aunque GIF soporta animacin, el PNG se desarroll como un formato de imagen esttico y se cre el formato MNG como su variante animada. El PNG gan mayor popularidad en agosto de 1999 cuando Unisys puso fin a su poltica de licencias de patente libres de derechos para los desarrolladores de software libre o no comercial. Especificacin de la versin 1.0 de PNG fue lanzada el 1 de julio de 1996 y despus apareci como RFC 2083. Rpidamente se convirti en una recomendacin W3C el 1 de octubre de 1996. Versin 1.1 con algunos pequeos cambios y con 3 nuevas extensiones o "chunks" fue liberada el 31 de diciembre de 1998. Versin 1.2. Nueva extensin. Fue liberada el 11 de agosto de 1999. Nueva versin, ligeramente diferente de la anterior y con una nueva extensin. Actualmente PNG es un estndar internacional (ISO/IEC 15948:2003), tambin recomendado por la W3C el 10 de noviembre de 2003. El estndar a partir de 2004 es (ISO/IEC 15948:2004).
Detalles tcnicos
Un archivo PNG empieza con una firma de 8 bytes, los valores en hexadecimal son: 89 50 4E 47 0D 0A 1A 0A, los valores decimales son: 137 80 78 71 13 10 26 10; cada valor est ah por una razn especfica.
Byte(s) 89 Propsito Tiene el bit ms alto puesto a 1 para detectar sistemas de transmisin que no soportan datos de 8 bits y para reducir el riesgo de que un fichero de texto sea errneamente interpretado como PNG.
504E47 En ASCII, las letras "PNG" permitiendo que una persona identifique el formato en caso de verlo en un editor de texto. 0D0A 1A 0A Una nueva lnea con estilo DOS (CRLF) para detectar las conversiones de final de lnea entre DOS y UNIX. Un byte que detiene el despliegue del fichero bajo DOS cuando se ha usado el comando TYPE. Una nueva lnea en UNIX (LF) para detectar la conversin de final de lnea entre DOS y UNIX.
Portable Network Graphics En caso de que la segunda letra sea mayscula esto significar que la seccin es pblica en la especificacin o el registro de secciones para propsitos especiales, en caso contrario ser privada (no estandarizada). Este uso de maysculas y minsculas asegura que nunca haya conflictos entre secciones pblicas y privadas. La tercera letra debe estar en maysculas para cumplir las especificaciones de PNG y est reservada para futuras expansiones. La cuarta letra indica si es seguro copiar la seccin en caso de que no sea reconocida, en caso de estar en minsculas es seguro copiar la seccin sin importar la cantidad de modificacin que haya sufrido el fichero, si es mayscula solo se debern copiar si no hay secciones crticas que hayan sufrido modificaciones.
Secciones esenciales
Un decodificador debe ser capaz de entender estas secciones para leer y renderizar un PNG: IHDR, debe ser la primera seccin, contiene la cabecera. PLTE, contiene la paleta (lista de colores). IDAT, contiene la imagen que debe ser dividida en mltiples secciones IDAT, haciendo esto se incrementa el tamao de la imagen ligeramente pero hace posible generar imgenes PNG en streaming. IEND, marca el final de la imagen.
Secciones de metadatos
Otros atributos que pueden ser guardados en una imagen PNG son: valores de gamma, color del fondo e informacin textual. PNG tambin soporta correccin de color con el uso de sistemas de manejo del color como sRGB. bKGD: contiene el color de fondo por defecto, se usa cuando no hay un mejor color disponible para mostrar, como en un visor de imgenes pero no en un navegador web. cHRM: balance de blanco. gAMA: especfica la gamma. hIST: guarda el histograma o cantidad total de cada color en la imagen. iCCP: perfil ICC de color. iTXt: contiene texto (UTF-8) comprimido o no. pHYs: contiene el tamao previsto del pxel y/o el ratio de la imagen. sBIT: (bits significativos) indican la exactitud de los colores en la imagen. sPLT: sugiere una paleta para usar en caso de que el rango completo de colores no este disponible. sRGB: indica que se usa el estndar sRBG color space. tEXt: almacena texto que puede ser representado en ISO 8859-1 con un nombre=valor para cada seccin. tIME: almacena la fecha de la ltima modificacin. tRNS: contiene informacin sobre la transparencia. Para imgenes indexadas almacena el canal alpha para una o ms paletas, para imgenes en color real y escala de grises almacena la informacin de un solo pxel que debe ser considerado completamente transparente. zTXt: contiene texto comprimido con los mismos lmites que tEXt. La primera letra en minsculas de estas secciones indica que no son necesarias en la especificacin de PNG, la ltima letra en minsculas indica que es seguro copiarlas incluso si la aplicacin en cuestin no las entiende. Otros atributos que pueden ser almacenados en un PNG incluyen valores de correccin gamma, color de fondo y metadatos. PNG adems tambin utiliza la correccin de color que utilizan los sistemas de administracin de color como el sRGB. Algunos programas como Adobe Photoshop disponen de este sistema.
Profundidad de color
Las imgenes en formato PNG pueden ser imgenes de paleta indexada o estar formadas por uno o varios canales. Si existe ms de un canal, todos los canales tienen el mismo nmero de bits por pxel (tambin llamado profundidad de bits por canal). Aunque en la especificacin oficial [1] del PNG se nombra la profundidad de bits por canal, normalmente los programas de edicin nombran slo la cantidad total de bits por pxel, es decir, la profundidad de color. El nmero de canales depende de si la imagen es en escala de grises o en color y si dispone de canal alfa (tambin llamado canal de transparencia). La combinaciones permitidas por PNG son: Escala de grises (1 canal). Escala de grises y canal alfa (2 canales). Canales rojo, verde y azul (RGB, 3 canales, tambin llamado color verdadero o Truecolor). Canales rojo, verde, azul y alfa (RGB + alfa, 4 canales).
Por otra parte, las imgenes indexadas disponen de un tope de 256 colores como mximo. Esta paleta de colores est almacenada con una profundidad de canal de 8 bits. La paleta no puede tener ms colores que los marcados por la profundidad de bits, es decir 28=256 colores, aunque s puede tener menos (por ejemplo, una imagen de 50 colores slo almacenar 50 entradas, evitando almacenar datos que no son utilizados).
16 32 24 48 32 64
La tabla expuesta a la derecha indican la profundidad de color para cada formato de imagen que soporta PNG. sta se extrae de la profundidad de bits por canal y se multiplica por el nmero de canales. Las casillas en rojo representan combinaciones no soportadas. El estndar requiere que los decodificadores puedan leer todos los formatos disponibles, pero muchos editores de imagen slo pueden generar un pequeo subconjunto de ellos.
Transparencia en la imagen
PNG ofrece una gran variedad de opciones de transparencia: con color verdadero o escala de grises, incluso un solo pxel puede ser declarado transparente o puede aadirse un canal alfa. Para imgenes que usan paletas se puede aadir un canal alfa en las entradas de la paleta. El nmero de dichos valores almacenados puede ser menor que el total de entradas en la paleta, de modo que el resto de las entradas se considerarn completamente opacas. La bsqueda de pxeles con transparencia binaria debe hacerse antes de cualquier reduccin de color para evitar que algunos pxeles se conviertan en transparentes accidentalmente. A diferencia de la transparencia ofrecida por GIF que slo puede tomar 2 valores (completamente transparente o completamente opaco), el canal alfa de PNG permite utilizar mayor profundidad de bits para lograr efectos de semi-transparencia, propios de objetos translcidos. Por ejemplo, con una profundidad de 8 bits para transparencias se pueden conseguir 28 = 256 grados diferentes de transparencia, como si se tratara de un color.[2]
Compresin
El mtodo de compresin utilizado por el PNG es conocido como deflacin (en ingls "Deflate algorithm"). Tambin existen mtodos de filtrado. En la especificacin 1.2 se define un nico tipo de filtro, que incluye 5 modos de prediccin del valor del pxel, que resulta muy til para mejorar la compresin, donde se elige para cada lnea de la imagen (scanline) un mtodo de filtrado que predice el color de cada pxel basndose en los colores de los pxeles previos y resta al color del pxel actual, el color pronosticado. Los cinco mtodos son: None, Sub, Up, Average y Paeth. Estos filtros pueden reducir notablemente el tamao final del archivo, aunque depende en gran medida de la imagen de entrada. El algoritmo de compresin puede encargarse de la adecuada eleccin del mtodo que mayor reduccin ofrezca. El tipo de media MIME para PNG es "image/png" (aprobado el 14 de octubre de 1996).
Animacin
APNG es un formato basado en PNG que soporta animacin. APNG soporta el visionado de una sola imagen en caso de que el decodificador no entienda este formato. Es aceptado por Firefox y tiene extensin .png. MNG es un formato de imagen que soporta animacin y est basado en las ideas y en algunas secciones de PNG, pero es un sistema complejo y no permite el visionado de una sola imagen cosa que si hace GIF y APNG.
PNG en la web
Pese a que las caractersticas tcnicas y de compresin hacen de PNG un formato ideal para sustituir a GIF, su adopcin ha sido muy lenta, debido en parte a comparaciones errneas y algunas desventajas tcnicas: no est soportado por algunos navegadores muy viejos (tales navegadores, sin embargo, estn en pleno desuso en esta primera dcada del siglo XXI). la administracin de color fallaba en algunos navegadores (fcilmente evitable por la razn anterior).
Falsas creencias
Internet Explorer 6 no soporta imgenes PNG transparentes. Habra que matizar un punto. Internet Explorer 6 e inferiores admiten transparencias binarias como en el GIF, pero fallan al mostrar imgenes con canal alfa. Eso se debe a que el paquete que especifica el canal alfa es opcional (tRNS [3]) segn la especificacin PNG, sin embargo Internet Explorer 7 s los admite. Las imgenes en PNG pesan ms que los GIF. De nuevo, no es cierto. Esta falsa creencia es debido a que se compara con PNGs mal codificados o de 32 bits con GIFs de 256 colores.
Problemas de color
Algunas versiones de algunos navegadores web presentan los valores de correccin gamma incluso cuando no estn especificados en el PNG. Navegadores conocidos con problemas de visualizacin de PNG: Internet Explorer 5.5 y 6. Netscape 7.0 a 7.2. Opera (versiones anteriores a la 7.50). El efecto final es que el color mostrado en el PNG no coincide con el esquema de color del resto de la pgina web. Una forma sencilla de evitar esto es volviendo a codificar el PNG truncando ciertos atributos. Algunas utilidades para tal fin: PNGOUT [4] es una utilidad gratuita de DOS que utiliza un algoritmo exclusivo para recomprimir un PNG y reducir el tamao del fichero al mnimo, sin prdidas. Superpng, es un plugin gratuito para Photoshop que permite la optimizacin de ficheros PNG. OptiPNG es una utilidad gratuita de DOS que recomprime un PNG, reduciendo su tamao sin prdidas.
Bibliografa
Greg Roelofs (1999) (en ingls, libro completo en html). PNG: The Definitive Guide [5]. O'Reilly & Associates, Inc.. (A excepcin de las tapas, el libro est bajo licencia GFDL)
Referencias
[1] [2] [3] [4] [5] http:/ / www. w3. org/ TR/ 2003/ REC-PNG-20031110/ http:/ / www. libpng. org/ pub/ png/ http:/ / www. w3. org/ TR/ 2003/ REC-PNG-20031110/ #11tRNS http:/ / advsys. net/ ken/ utils. htm http:/ / www. libpng. org/ pub/ png/ book/ toc. html
Enlaces externos
Sitio web del formato PNG ([Link] (en ingls) Pgina del Web Consortium sobre PNG ([Link] (en ingls) libpng ([Link] biblioteca oficial en C (en ingls)
Licencia
Creative Commons Attribution-Share Alike 3.0 //[Link]/licenses/by-sa/3.0/