Portable Network Graphics PNG (siglas en inglés
es un formato gráfico basado en unalgoritmo de compresión sin pérdida para bitmaps no sujeto a patentes. Este formato fue desarrollado en buena parte para solventar las deficiencias del formato GIF y permite almacenar imágenes con una mayor profundidad de contraste y otros importantes datos.
Las imágenes PNG usan la extensión .png y han obtenido un tipo MIME (image/png) aprobado el 14 de octubre de 1996.
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 razón específica.
Byte(s) | Propósito |
---|---|
89 | Tiene el bit más alto puesto a 1 para detectar sistemas de transmisión que no soportan datos de 8 bits y para reducir el riesgo de que un fichero de texto sea erróneamente interpretado como PNG. |
50 4E 47 | En ASCII, las letras "PNG" permitiendo que una persona identifique el formato en caso de verlo en un editor de texto. |
0D 0A | Una nueva línea con estilo DOS (CRLF) para detectar las conversiones de final de línea entre DOS y UNIX. |
1A | Un byte que detiene el despliegue del fichero bajo DOS cuando se ha usado el comando TYPE. |
0A | Una nueva línea en UNIX (LF) para detectar la conversión de final de línea entre DOS y UNIX. |
Segmentos del archivo
Después de la cabecera se encuentran una serie de segmentos de los cuales cada uno guarda cierta información acerca de la imagen. Los segmentos se auto declaran como críticos (critical) o auxiliares (ancillary) de modo que un programa que encuentre un segmento auxiliar y no lo entienda puede ignorarlo sin peligro. La estructura basada en segmentos está diseñada para poder ampliar el formato PNG manteniendo la compatibilidad con versiones antiguas.
Cada una de las secciones tiene una cabecera que específica su tamaño y tipo, inmediatamente seguido de los datos y el checksum de los datos. Las secciones tienen un nombre de 4 letras que es sensible a las mayúsculas. El uso de mayúsculas o minúsculas en dicho nombre provee a los decodificadores de información acerca de las secciones que no son reconocidas.
Si la primera letra es mayúscula esto indica que la sección es esencial, en caso contrario será auxiliar. Las secciones esenciales son necesarias para leer el fichero, si el decodificador encuentra una sección esencial que no reconoce debe abortar la lectura.
En caso de que la segunda letra sea mayúscula esto significará que la sección es pública en la especificación o el registro de secciones para propósitos especiales, en caso contrario será privada (no estandarizada). Este uso de mayúsculas y minúsculas asegura que nunca haya conflictos entre secciones públicas y privadas.
La tercera letra debe estar en mayúsculas para cumplir las especificaciones de PNG y está reservada para futuras expansiones.
La cuarta letra indica si es seguro copiar la sección en caso de que no sea reconocida, en caso de estar en minúsculas es seguro copiar la sección sin importar la cantidad de modificación que haya sufrido el fichero, si es mayúscula solo se deberán copiar si no hay secciones críticas que hayan sufrido modificaciones.
Las imágenes en formato PNG pueden ser imágenes de paleta indexada o estar formadas por uno o varios canales. Si existe más de un canal, todos los canales tienen el mismo número de bits por píxel (también llamado profundidad de bits por canal). Aunque en la especificación oficial del PNG se nombra la profundidad de bits por canal, normalmente los programas de edición nombran sólo la cantidad total de bits por píxel, es decir, la profundidad de color.
El número de canales depende de si la imagen es en escala de grises o en color y si dispone de canal alfa (también 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, también llamado color verdadero o Truecolor).
- Canales rojo, verde, azul y alfa (RGB + alfa, 4 canales).
Por otra parte, las imágenes indexadas disponen de un tope de 256 colores como máximo. Esta paleta de colores está almacenada con una profundidad de canal de 8 bits. La paleta no puede tener más 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 sólo almacenará 50 entradas, evitando almacenar datos que no son utilizados).
Profundidad de bits por canal | 1 | 2 | 4 | 8 | 16 |
Imagen indexada (1 canal) | 1 | 2 | 4 | 8 | |
Escala de grises (1 canal) | 1 | 2 | 4 | 8 | 16 |
Escala de grises con alfa (2 canales) | 16 | 32 | |||
Color verdadero (RGB) (3 canales) | 24 | 48 | |||
Color verdadero con alfa (RGBA) (4 canales) | 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 número de canales. Las casillas en rojo representan combinaciones no soportadas. El estándar requiere que los decodificadores puedan leer todos los formatos disponibles, pero muchos editores de imagen sólo pueden generar un pequeño subconjunto de ellos.
Transparencia en la imagen[editar]
PNG ofrece una gran variedad de opciones de transparencia: con color verdadero o escala de grises, incluso un solo píxel puede ser declarado transparente o puede añadirse un canal alfa. Para imágenes que usan paletas se puede añadir un canal alfa en las entradas de la paleta. El número de dichos valores almacenados puede ser menor que el total de entradas en la paleta, de modo que el resto de las entradas se considerarán completamente opacas. La búsqueda de píxeles con transparencia binaria debe hacerse antes de cualquier reducción de color para evitar que algunos píxeles se conviertan en transparentes accidentalmente.
A diferencia de la transparencia ofrecida por GIF que sólo 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 translúcidos. 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.1
Compresión
El método de compresión utilizado por el PNG es conocido como deflación (en inglés "Deflate algorithm"). También existen métodos de filtrado. En la especificación 1.2 se define un único tipo de filtro, que incluye 5 modos de predicción del valor del píxel, que resulta muy útil para mejorar la compresión, donde se elige para cada línea de la imagen (scanline) un método de filtrado que predice el color de cada píxel basándose en los colores de los píxeles previos y resta al color del píxel actual, el color pronosticado. Los cinco métodos son: None, Sub, Up, Average y Paeth.
Estos filtros pueden reducir notablemente el tamaño final del archivo, aunque depende en gran medida de la imagen de entrada. El algoritmo de compresión puede encargarse de la adecuada elección del método que mayor reducción ofrezca.
Comentarios
Publicar un comentario