Portable Network Graphics ( PNG , oficialmente pronunciado / p ɪ ŋ / [2] [3] PING , más comúnmente pronunciado / ˌ p i ɛ n dʒ i / [4] PEE -en- JEE ) es una trama de gráficos archivo de formato que admite la compresión de datos sin pérdidas . PNG se desarrolló como un reemplazo mejorado y no patentado del formato de intercambio de gráficos (GIF).
| |
Extensión de nombre de archivo | .png |
---|---|
Tipo de medio de Internet | imagen / png |
Código de tipo | PNGf PNG |
Identificador de tipo uniforme (UTI) | public.png |
Conformación de UTI | imagen pública |
número mágico | 89 50 4e 47 0d 0a 1a 0a |
Desarrollado por | Grupo de desarrollo de PNG (donado al W3C ) |
Versión inicial | 1 de octubre de 1996 |
Tipo de formato | Formato de imagen de mapa de bits sin pérdida |
Extendido a | APNG , JNG y MNG |
Estándar | ISO / IEC 15948 , [1] IETF RFC 2083 |
¿ Formato abierto ? | sí |
PNG admite imágenes basadas en la gama de colores (con paletas de 24 bits RGB o de 32 bits RGBA colores), en escala de grises imágenes (con o sin canal alfa de transparencia), y no basados en la paleta de imágenes a todo color RGB o RGBA. El grupo de trabajo de PNG diseñó el formato para transferir imágenes en Internet , no para gráficos impresos de calidad profesional; por lo tanto, no se admiten espacios de color que no sean RGB , como CMYK . Un archivo PNG contiene una sola imagen en una estructura extensible de fragmentos , codificando los píxeles básicos y otra información como comentarios textuales y verificaciones de integridad documentadas en RFC 2083. [5]
Los archivos PNG usan la extensión de archivo PNG
o png
y se les asigna el tipo de medio MIMEimage/png
. [6] PNG se publicó como RFC 2083 informativo en marzo de 1997 y como norma ISO / IEC 15948 en 2004. [1]
Historia y desarrollo
La motivación para crear el formato PNG fue la constatación, a principios de 1995, de que el algoritmo de compresión de datos Lempel – Ziv – Welch (LZW) utilizado en el formato Graphics Interchange Format (GIF) fue patentado por Unisys . También hubo otros problemas con el formato GIF que hicieron deseable un reemplazo, en particular su límite de 256 colores en un momento en que las computadoras con pantallas mucho más avanzadas se estaban volviendo comunes.
Un hilo de discusión precursor de enero de 1995, en el grupo de noticias de Usenet "comp.graphics" con el tema Pensamientos sobre un formato de archivo de reemplazo GIF , tenía muchas propuestas que luego serían parte del formato de archivo PNG. En ese hilo, Oliver Fromme, autor del popular visor de JPEG QPEG , propuso el nombre PING, que eventualmente se convirtió en PNG, un acrónimo recursivo que significa que PING no es GIF , y también la .png
extensión . [7]
Aunque GIF permite la animación , se decidió que PNG debería ser un formato de imagen única. [8] En 2001, los desarrolladores de PNG publicaron el formato de gráficos de red de imágenes múltiples (MNG), con soporte para animación. MNG logró un soporte de aplicaciones moderado, pero no lo suficiente entre los navegadores web convencionales y ningún uso entre los diseñadores o editores de sitios web. En 2008, algunos desarrolladores de Mozilla publicaron el formato de gráficos de red portátiles animados (APNG) con objetivos similares. APNG es un formato que es compatible de forma nativa con los navegadores web basados en Gecko y Presto y también se usa comúnmente para miniaturas en el sistema PlayStation Portable de Sony (usando la extensión de archivo PNG normal). En 2017, los navegadores basados en Chromium adoptaron la compatibilidad con APNG . En enero de 2020, Microsoft Edge se basó en Chromium , heredando así el soporte para APNG . Con esto, todos los principales navegadores ahora son compatibles con APNG.
- 1 de octubre de 1996: se publicó la versión 1.0 de la especificación PNG, que luego apareció como RFC 2083. Se convirtió en una recomendación del W3C el 1 de octubre de 1996.
- 31 de diciembre de 1998: se lanzó la versión 1.1, con algunos pequeños cambios y la adición de tres nuevos fragmentos.
- 11 de agosto de 1999: se lanzó la versión 1.2, que agrega un fragmento adicional.
- 10 de noviembre de 2003: PNG se convirtió en una norma internacional ( ISO / IEC 15948: 2003). Esta versión de PNG difiere solo ligeramente de la versión 1.2 y no agrega nuevos fragmentos.
- 3 de marzo de 2004: ISO / IEC 15948: 2004 . [1]
Grupo de trabajo PNG
La especificación original de PNG fue creada por un grupo ad hoc de entusiastas y expertos en gráficos por computadora. Las discusiones y decisiones sobre el formato se llevaron a cabo por correo electrónico. Los autores originales que figuran en RFC 2083 son: [9]
- Montaje: Thomas Boutell
- Editor colaborador: Tom Lane
- Autores (en orden alfabético por apellido): Mark Adler , Thomas Boutell , Christian Brunschen , Adam M. Costello , Lee Daniel Crocker , Andreas Dilger , Oliver Fromme , Jean-loup Gailly , Chris Herborth , Aleks Jakulin , Neal Kettler , Tom Lane , Alexander Lehmann , Chris Lilley , Dave Martindale, Owen Mortensen , Keith S. Pickens , Robert P. Poole , Glenn Randers-Pehrson , Greg Roelofs , Willem van Schaik , Guy Schalnat , Paul Schmidt , Tim Wegner , Jeremy Wohl
Formato de archivo
Encabezado de archivo
Un archivo PNG comienza con una firma de 8 bytes [10] (consulte la imagen del editor hexadecimal a la derecha):
Valores ( hexadecimal ) | Propósito |
---|---|
89 | Tiene el bit alto configurado para detectar sistemas de transmisión que no admiten datos de 8 bits y para reducir la posibilidad de que un archivo de texto se interprete erróneamente como PNG, o viceversa. |
50 4E 47 | En ASCII , las letras PNG , permiten que una persona identifique el formato fácilmente si se ve en un editor de texto. |
0D 0A | Un final de línea de estilo DOS (CRLF) para detectar la conversión de datos de final de línea DOS-Unix. |
1A | Un byte que detiene la visualización del archivo en DOS cuando se ha utilizado el tipo de comando : el carácter de fin de archivo . |
0A | Un final de línea de estilo Unix (LF) para detectar la conversión de final de línea Unix-DOS. |
"Fragmentos" dentro del archivo
Después del encabezado, viene una serie de fragmentos , [11] cada uno de los cuales transmite cierta información sobre la imagen. Los fragmentos se declaran a sí mismos como críticos o auxiliares , y un programa que encuentra un fragmento auxiliar que no comprende puede ignorarlo con seguridad. Esta estructura de capas de almacenamiento basado en trozo, similar en concepto a un formato contenedor o para Amiga ' s FIB , está diseñado para permitir que el formato PNG se extienda mientras mantiene la compatibilidad con versiones anteriores, que proporciona compatibilidad hacia adelante , y esta misma estructura de archivos ( con diferentes firmas y fragmentos) se utiliza en los formatos asociados MNG , JNG y APNG .
Un fragmento consta de cuatro partes: longitud (4 bytes, [12] big-endian ), tipo / nombre del fragmento (4 bytes [13] ), fragmento de datos (bytes de longitud) y CRC (código de redundancia cíclica / suma de comprobación; 4 bytes [ 12] ). El CRC es un CRC-32 de orden de bytes de red que se calcula sobre el tipo de fragmento y los datos del fragmento, pero no la longitud.
Largo | Tipo de fragmento | Fragmentos de datos | CRC |
---|---|---|---|
4 bytes | 4 bytes | Bytes de longitud | 4 bytes |
Los tipos de fragmentos reciben un tipo / nombre ASCII de cuatro letras que distingue entre mayúsculas y minúsculas ; compárese con FourCC . El caso de las diferentes letras del nombre (bit 5 del valor numérico del carácter) es un campo de bits que proporciona al decodificador alguna información sobre la naturaleza de los fragmentos que no reconoce.
El caso de la primera letra indica si el fragmento es crítico o no. Si la primera letra está en mayúscula, el fragmento es crítico; si no, el fragmento es auxiliar. Los fragmentos críticos contienen información necesaria para leer el archivo. Si un decodificador encuentra un fragmento crítico que no reconoce, debe abortar la lectura del archivo o proporcionar al usuario una advertencia adecuada.
El caso de la segunda letra indica si el fragmento es "público" (ya sea en la especificación o en el registro de fragmentos públicos para fines especiales) o "privado" (no estandarizado). Las mayúsculas son públicas y las minúsculas son privadas. Esto garantiza que los nombres de fragmentos públicos y privados nunca entren en conflicto entre sí (aunque dos nombres de fragmentos privados podrían entrar en conflicto).
La tercera letra debe estar en mayúsculas para cumplir con la especificación PNG. Está reservado para futuras expansiones. Los decodificadores deben tratar un fragmento con una tercera letra minúscula igual que cualquier otro fragmento no reconocido.
El caso de la cuarta letra indica si el fragmento es seguro para ser copiado por editores que no lo reconocen. Si está en minúsculas, el fragmento se puede copiar de forma segura independientemente del alcance de las modificaciones al archivo. Si está en mayúsculas, solo se puede copiar si las modificaciones no han tocado ningún fragmento crítico.
Trozos críticos
Un decodificador debe poder interpretar fragmentos críticos para leer y renderizar un archivo PNG.
IHDR
debe ser el primer fragmento; contiene (en este orden) el ancho de la imagen (4 bytes); altura (4 bytes); profundidad de bits (1 byte, valores 1, 2, 4, 8 o 16); tipo de color (1 byte, valores 0, 2, 3, 4 o 6); método de compresión (1 byte, valor 0); método de filtrado (1 byte, valor 0); y método de entrelazado (1 byte, valores 0 "sin entrelazado" o 1 " entrelazado Adam7 ") (13 bytes de datos en total). [14] Como se indica en el Consorcio World Wide Web , la profundidad de bits se define como "el número de bits por muestra o por índice de paleta (no por píxel)". [14]PLTE
contiene la paleta : una lista de colores.IDAT
contiene la imagen, que puede dividirse entre varios fragmentos de IDAT. Esta división aumenta ligeramente, pero permite generar un archivo PNG de forma continua. El fragmento IDAT contiene los datos de la imagen real, que es el flujo de salida del algoritmo de compresión. [15]IEND
marca el final de la imagen; el campo de datos del fragmento IEND tiene 0 bytes / está vacío. [dieciséis]
El PLTE
trozo es esencial para el tipo de color 3 ( color indexado ). Es opcional para los tipos de color 2 y 6 (truecolor y truecolor con alfa) y no debe aparecer para los tipos de color 0 y 4 (escala de grises y escala de grises con alfa).
Trozos auxiliares
Otros atributos de imagen que se pueden almacenar en archivos PNG incluyen valores de gamma , color de fondo e información de metadatos textuales . PNG también admite la gestión del color mediante la inclusión de perfiles de espacio de color ICC . [17]
bKGD
da el color de fondo predeterminado. Está diseñado para usarse cuando no hay una mejor opción disponible, como en visores de imágenes independientes (pero no en navegadores web; consulte a continuación para obtener más detalles).cHRM
proporciona las coordenadas de cromaticidad de las primarias de la pantalla y el punto blanco .dSIG
es para almacenar firmas digitales. [18]eXIf
almacena metadatos Exif . [19]gAMA
especifica gamma . El fragmento de gAMA contiene solo 4 bytes y su valor representa el valor de gamma multiplicado por 100.000; por ejemplo, el valor gamma 1 / 3.4 se calcula en 29411.7647059 ((1 / 3.4) * (100,000)) y se convierte en un número entero (29412) para su almacenamiento. [20]hIST
puede almacenar el histograma, o la cantidad total de cada color en la imagen.iCCP
es un perfil de color ICC .iTXt
contiene una palabra clave y texto UTF-8 , con codificaciones para una posible compresión y traducciones marcadas con una etiqueta de idioma . La plataforma de metadatos extensible (XMP) usa este fragmento con una palabra clave 'XML: com.adobe.xmp'pHYs
mantiene el tamaño de píxel deseado (o relación de aspecto de píxel); el pHY contiene "Píxeles por unidad, eje X" (4 bytes), "Píxeles por unidad, eje Y" (4 bytes) y "Especificador de unidad" (1 byte) para un total de 9 bytes. [21]sBIT
(bits significativos) indica la precisión del color de los datos de origen; este fragmento contiene un total de entre 1 y 13 bytes. [22] [23] [24]sPLT
sugiere una paleta para usar si la gama completa de colores no está disponible.sRGB
indica que se utiliza el espacio de color estándar sRGB ; el fragmento sRGB contiene solo 1 byte, que se utiliza para la "intención de representación" (4 valores, 0, 1, 2 y 3, se definen para la intención de representación). [25] [26]sTER
fragmento indicador de imagen estéreo para imágenes estereoscópicas . [27]tEXt
puede almacenar texto que se puede representar en ISO / IEC 8859-1 , con un par clave-valor para cada fragmento. La "clave" debe tener entre 1 y 79 caracteres. El separador es un carácter nulo. El "valor" puede tener cualquier longitud, incluido el cero hasta el tamaño de fragmento máximo permitido menos la longitud de la palabra clave y el separador. Ni la "clave" ni el "valor" pueden contener un carácter nulo. Los espacios iniciales o finales también están prohibidos.tIME
almacena la hora en que se modificó la imagen por última vez.tRNS
contiene información de transparencia. Para imágenes indexadas, almacena valores de canal alfa para una o más entradas de paleta. Para imágenes en color verdadero y en escala de grises, almacena un valor de un solo píxel que debe considerarse completamente transparente.zTXt
contiene texto comprimido (y un marcador de método de compresión) con los mismos límites quetEXt
.
La primera letra minúscula en estos fragmentos indica que no son necesarios para la especificación PNG. La última letra minúscula en algunos fragmentos indica que es seguro copiarlos, incluso si la aplicación en cuestión no los comprende.
Formato de pixel
Tipo de color | Canales | Bits por canal | ||||
---|---|---|---|---|---|---|
1 | 2 | 4 | 8 | dieciséis | ||
Indexado | 1 | 1 | 2 | 4 | 8 | |
Escala de grises | 1 | 1 | 2 | 4 | 8 | dieciséis |
Escala de grises y alfa | 2 | dieciséis | 32 | |||
Color verdadero | 3 | 24 | 48 | |||
Truecolor y alpha | 4 | 32 | 64 |
Los píxeles de las imágenes PNG son números que pueden ser índices de datos de muestra en la paleta o los datos de muestra en sí. La paleta es una tabla separada contenida en el fragmento PLTE. Los datos de muestra para un solo píxel constan de una tupla de entre uno y cuatro números. Ya sea que los datos de píxeles representen índices de paleta o valores de muestra explícitos, los números se denominan canales y cada número de la imagen se codifica con un formato idéntico.
Los formatos permitidos codifican cada número como un valor entero sin signo utilizando un número fijo de bits, denominado en la especificación PNG como profundidad de bits . Tenga en cuenta que esto no es lo mismo que la profundidad de color , que se usa comúnmente para referirse al número total de bits en cada píxel, no a cada canal. Las profundidades de bits permitidas se resumen en la tabla junto con el número total de bits utilizados para cada píxel.
El número de canales depende de si la imagen es en escala de grises o en color y si tiene un canal alfa . PNG permite las siguientes combinaciones de canales, llamadas tipo de color .
0 (000 2 ) | escala de grises |
2 (010 2 ) | rojo, verde y azul: rgb / truecolor |
3 (011 2 ) | indexado: canal que contiene índices en una paleta de colores |
4 (100 2 ) | escala de grises y alfa: nivel de opacidad para cada píxel |
6 (110 2 ) | rojo, verde, azul y alfa |
El tipo de color se especifica como un valor de 8 bits, sin embargo, solo se utilizan los 3 bits inferiores e, incluso entonces, solo se permiten las cinco combinaciones enumeradas anteriormente. Siempre que el tipo de color sea válido, se puede considerar como un campo de bits como se resume en la tabla adyacente:
Tipo de color | Nombre | Binario | Mascaras | |||
---|---|---|---|---|---|---|
A | C | PAG | ||||
0 | Escala de grises | 0 | 0 | 0 | 0 | |
2 | Color verdadero | 0 | 0 | 1 | 0 | color |
3 | Indexado | 0 | 0 | 1 | 1 | paleta de color |
4 | Escala de grises y alfa | 0 | 1 | 0 | 0 | alfa |
6 | Truecolor y alpha | 0 | 1 | 1 | 0 | alfa, color |
- valor de bit 1: los datos de la imagen almacenan índices de paleta. Esto solo es válido en combinación con el valor de bit 2;
- valor de bit 2: las muestras de imagen contienen tres canales de datos que codifican colores tricromáticos ; de lo contrario, las muestras de imágenes contienen un canal de datos que codifican luminancia relativa ,
- valor de bit 4: las muestras de imagen también contienen un canal alfa expresado como una medida lineal de la opacidad del píxel. Esto no es válido en combinación con el valor de bit 1.
Con imágenes de color indexadas, la paleta siempre almacena colores tricromáticos a una profundidad de 8 bits por canal (24 bits por entrada de paleta). Además, se puede incluir una lista opcional de valores alfa de 8 bits para las entradas de la paleta; si no se incluye, o si es más corto que la paleta, se asume que las entradas restantes de la paleta son opacas. La paleta no debe tener más entradas de las que permite la profundidad de bits de la imagen, pero puede tener menos (por ejemplo, si una imagen con píxeles de 8 bits solo usa 90 colores, entonces no necesita entradas de paleta para los 256 colores). La paleta debe contener entradas para todos los valores de píxeles presentes en la imagen.
El estándar permite que los PNG en color indexados tengan 1, 2, 4 u 8 bits por píxel; Las imágenes en escala de grises sin canal alfa pueden tener 1, 2, 4, 8 o 16 bits por píxel. Todo lo demás usa una profundidad de bits por canal de 8 o 16. Las combinaciones que esto permite se dan en la tabla anterior. El estándar requiere que los decodificadores puedan leer todos los formatos de color admitidos, pero muchos editores de imágenes solo pueden producir un pequeño subconjunto de ellos.
Transparencia de imagen
PNG ofrece una variedad de opciones de transparencia. Con imágenes en color verdadero y en escala de grises, se puede declarar un solo valor de píxel como transparente o se puede agregar un canal alfa (lo que permite utilizar cualquier porcentaje de transparencia parcial). Para las imágenes con paleta, se pueden agregar valores alfa a las entradas de la paleta. El número de dichos valores almacenados puede ser menor que el número total de entradas de la paleta, en cuyo caso las entradas restantes se consideran completamente opacas.
Se supone que el escaneo de valores de píxeles para la transparencia binaria se realiza antes de cualquier reducción de color para evitar que los píxeles se vuelvan transparentes involuntariamente. Es muy probable que esto plantee un problema para los sistemas que pueden decodificar imágenes de 16 bits por canal (como se requiere para cumplir con la especificación) pero solo emiten 8 bits por canal (la norma para todos los sistemas excepto los más altos) .
El almacenamiento alfa puede ser "asociado" (" premultiplicado ") o "no asociado", pero PNG estandarizado [29] en alfa "no asociado" ("no premultiplicado"), lo que significa que las imágenes no están codificadas en alfa ; las emisiones representadas en RGB no son las emisiones a nivel de píxel. Esto significa que la sobreoperación multiplicará las emisiones RGB por el alfa y no puede representar la emisión y la oclusión correctamente.
Compresión
PNG utiliza un proceso de compresión de 2 etapas:
- precompresión: filtrado (predicción)
- compresión: DEFLATE
PNG utiliza DEFLATE , un algoritmo de compresión de datos sin pérdidas no patentado que incluye una combinación de codificación LZ77 y Huffman . Las implementaciones DEFLATE con licencia permisiva , como zlib , están ampliamente disponibles.
En comparación con los formatos con compresión con pérdida como JPG , la elección de una configuración de compresión superior a la media retrasa el procesamiento, pero a menudo no da como resultado un tamaño de archivo significativamente menor.
Filtración
Antes de aplicar DEFLATE, los datos se transforman a través de un método de predicción: se usa un método de filtro único para toda la imagen, mientras que para cada línea de imagen, se elige un tipo de filtro para transformar los datos y hacerlos comprimibles de manera más eficiente. [30] El tipo de filtro utilizado para una línea de exploración se antepone a la línea de exploración para permitir la descompresión en línea.
Solo hay un método de filtro en la especificación actual de PNG (denominado método 0) y, por lo tanto, en la práctica, la única opción es qué tipo de filtro aplicar a cada línea. Para este método, el filtro predice el valor de cada píxel basándose en los valores de los píxeles vecinos anteriores y resta el color predicho del píxel del valor real, como en DPCM . Una línea de imagen filtrada de esta manera suele ser más comprimible que la línea de la imagen sin procesar, especialmente si es similar a la línea anterior, ya que las diferencias de predicción generalmente se agruparán alrededor de 0, en lugar de extenderse por todos los valores de imagen posibles. Esto es particularmente importante al relacionar filas separadas, ya que DEFLATE no entiende que una imagen es una entidad 2D y, en cambio, solo ve los datos de la imagen como un flujo de bytes.
Hay cinco tipos de filtro para el método de filtro 0; cada tipo predice el valor de cada byte (de los datos de la imagen antes de filtrar) basándose en el byte correspondiente del píxel a la izquierda ( A ), el píxel arriba ( B ) y el píxel arriba y a la izquierda ( C ) o alguna combinación de los mismos, y codifica la diferencia entre el valor predicho y el valor real. Los filtros se aplican a valores de bytes, no a píxeles; los valores de los píxeles pueden ser uno o dos bytes, o varios valores por byte, pero nunca cruzan los límites de los bytes. Los tipos de filtro son: [31]
Tipo byte | Nombre del filtro | Valor previsto |
---|---|---|
0 | Ninguno | Cero (para que el valor del byte sin procesar pase inalterado) |
1 | Sub | Byte A (a la izquierda) |
2 | Arriba | Byte B (arriba) |
3 | Promedio | Media de bytes A y B , redondeada hacia abajo |
4 | Paeth | A , B o C , lo que esté más cerca de p = A + B - C |
El filtro Paeth se basa en un algoritmo de Alan W. Paeth . [32] Compare con la versión de DPCM utilizada en JPEG sin pérdidas , y con la transformada de ondícula discreta que utiliza ventanas 1 × 2, 2 × 1 o (para el predictor Paeth) 2 × 2 y ondas Haar .
La compresión se mejora aún más eligiendo los tipos de filtro de forma adaptativa línea por línea. Esta mejora, y un método heurístico para implementarlo comúnmente utilizado por el software de escritura PNG, fueron creados por Lee Daniel Crocker , quien probó los métodos en muchas imágenes durante la creación del formato; [33] la elección del filtro es un componente de la optimización del tamaño del archivo, como se explica a continuación.
Si se usa entrelazado, cada etapa del entrelazado se filtra por separado, lo que significa que la imagen se puede renderizar progresivamente a medida que se recibe cada etapa; sin embargo, el entrelazado generalmente hace que la compresión sea menos efectiva.
Entrelazado
PNG ofrece un esquema de entrelazado de 7 pasadas bidimensional opcional : el algoritmo Adam7 . Esto es más sofisticado que el esquema unidimensional de 4 pasos de GIF, y permite que una imagen de baja resolución más clara sea visible antes en la transferencia, particularmente si se utilizan algoritmos de interpolación como la interpolación bicúbica . [34]
Sin embargo, el esquema de 7 pasos tiende a reducir la compresibilidad de los datos más que los esquemas más simples.
Animación
El PNG en sí mismo no admite animaciones. MNG es una extensión de PNG que lo hace; fue diseñado por miembros del Grupo PNG. MNG comparte la estructura básica y los fragmentos de PNG, pero es significativamente más complejo y tiene una firma de archivo diferente, lo que lo hace automáticamente incompatible con los decodificadores PNG estándar, lo que llevó a que MNG casi no tenga soporte o soporte abandonado por la mayoría de los navegadores web o aplicaciones.
La complejidad de MNG llevó a la propuesta de APNG por parte de los desarrolladores de la Fundación Mozilla. Está basado en PNG, admite animación y es más simple que MNG. APNG ofrece un respaldo a la visualización de una sola imagen para decodificadores PNG que no son compatibles con APNG. Actualmente, el formato APNG es ampliamente compatible con los principales navegadores web. [35] APNG es compatible con Firefox 3.0 y superior, Pale Moon (todas las versiones) y la última versión de Opera es compatible con APNG desde que el motor se cambió a Blink. La última versión de Safari en iOS 8 y Safari 8 para OS X Yosemite , utilizan el motor WebKit que admite APNG. [36] Chromium 59.0 ha agregado soporte APNG [37] [38] y fue seguido por Google Chrome. Microsoft Edge ahora es compatible con APNG con el nuevo motor basado en Chromium.
El Grupo PNG decidió en abril de 2007 no adoptar APNG. [39] Se estaban debatiendo varias alternativas, ANG, aNIM / mPNG, "PNG en GIF" y su subconjunto "RGBA en GIF". [40] Sin embargo, actualmente solo APNG es compatible con los principales navegadores web. [35]
Ejemplos de
89 50 4E 47 0D 0A 1A 0A Firma PNG | IHDR Encabezado de imagen | IDAT Datos de imagen | IEND Final de la imagen |
Maleficio | Como personajes |
---|---|
89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 | .PNG .... .... IHDR |
Se muestra a la manera de los editores hexadecimales , con los valores de byte del lado izquierdo en formato hexadecimal , y en el lado derecho sus caracteres equivalentes de ISO-8859-1 con caracteres de control no reconocidos reemplazados por puntos. Además, la firma PNG y los fragmentos individuales están marcados con colores. Tenga en cuenta que son fáciles de identificar debido a sus nombres de tipo legibles por humanos (en este ejemplo PNG, IHDR, IDAT e IEND).
Ventajas
Las razones para utilizar esta norma internacional pueden ser:
- Portabilidad : la transmisión es independiente de la plataforma de software y hardware.
- Integridad : es posible representar imágenes en color verdadero, color indexado y en escala de grises.
- Codificación y decodificación en serie : permite generar y leer flujos de datos en serie, es decir, el formato del flujo de datos se utiliza para la generación y visualización de imágenes en el momento mediante comunicación serial.
- Presentación progresiva : para poder transmitir flujos de datos que inicialmente son una aproximación de toda la imagen y van mejorando progresivamente a medida que se recibe el flujo de datos.
- Solidez ante errores de transmisión : detecta correctamente los errores de transmisión del flujo de datos.
- Losslessness : No hay pérdida: el filtrado y la compresión no perder ningún dato.
- Eficiencia : cualquier presentación, compresión y filtrado de imágenes progresivas busca una decodificación y presentación eficientes.
- Compresión : las imágenes se pueden comprimir de manera eficiente y consistente.
- Facilidad : la implementación del estándar es sencilla.
- Intercambiabilidad : cualquier decodificador PNG que siga los estándares puede leer todos los flujos de datos PNG.
- Flexibilidad : permite futuras ampliaciones y adiciones privadas sin afectar el punto anterior.
- Libertad de restricciones legales : los algoritmos utilizados son gratuitos y accesibles.
Comparación con otros formatos de archivo
Formato de intercambio de gráficos (GIF)
- En imágenes pequeñas, GIF puede lograr una mayor compresión que PNG (consulte la sección sobre , a continuación).
- En la mayoría de las imágenes, excepto en el caso anterior, un archivo GIF tiene un tamaño mayor que una imagen PNG indexada.
- PNG ofrece una gama mucho más amplia de opciones de transparencia que GIF, incluida la transparencia del canal alfa .
- Considerando GIF se limita a 8 bits color indexado , PNG da una gama mucho más amplia de la profundidad de color, incluyendo 24 bits (8 bits por canal) y 48 bits (16 bits por canal) de color verdadero , permitiendo una mayor precisión de color, más suave fundidos, etc. [41] Cuando se agrega un canal alfa, son posibles hasta 64 bits por píxel (antes de la compresión).
- Al convertir una imagen del formato PNG a GIF, la calidad de la imagen puede verse afectada debido a la posterización si la imagen PNG tiene más de 256 colores.
- GIF admite intrínsecamente imágenes animadas. PNG admite la animación solo a través de extensiones no oficiales (consulte la sección sobre animación , más arriba).
Las imágenes PNG son menos compatibles con los navegadores más antiguos. En particular, IE6 tiene soporte limitado para PNG. [42]
JPEG
El formato JPEG (Joint Photographic Experts Group) puede producir un archivo más pequeño que PNG para imágenes fotográficas (y similares a fotografías), ya que JPEG utiliza un método de codificación con pérdida diseñado específicamente para datos de imágenes fotográficas, que generalmente está dominado por imágenes suaves y de bajo contraste. transiciones y una cantidad de ruido o estructuras irregulares similares. El uso de PNG en lugar de un JPEG de alta calidad para tales imágenes daría como resultado un gran aumento con una ganancia de calidad insignificante . En comparación, al almacenar imágenes que contienen texto, arte lineal o gráficos (imágenes con transiciones nítidas y grandes áreas de color sólido), el formato PNG puede comprimir datos de imagen más que JPEG. Además, PNG no tiene pérdidas, mientras que JPEG produce artefactos visuales alrededor de áreas de alto contraste. (Tales artefactos dependen de la configuración utilizada en la compresión JPG; pueden ser bastante notables cuando se usa una configuración de baja calidad [alta compresión]). Cuando una imagen contiene transiciones nítidas y partes fotográficas, se debe elegir entre los dos efectos. JPEG no admite transparencia.
La compresión con pérdida de JPEG también sufre pérdida de generación , donde la decodificación y recodificación repetida de una imagen para guardarla nuevamente provoca una pérdida de información cada vez, degradando la imagen. Debido a que PNG no tiene pérdidas, es adecuado para almacenar imágenes para editar. Si bien PNG es razonablemente eficiente al comprimir imágenes fotográficas, existen formatos de compresión sin pérdida diseñados específicamente para imágenes fotográficas, por ejemplo , WebP sin pérdida y Adobe DNG (negativo digital). Sin embargo, estos formatos no son ampliamente compatibles o son propietarios. Una imagen puede almacenarse sin pérdidas y convertirse a formato JPEG solo para su distribución, de modo que no haya pérdida de generación.
Si bien la especificación PNG no incluye explícitamente un estándar para incrustar datos de imagen Exif de fuentes como cámaras digitales, el método preferido para incrustar datos EXIF en un PNG es utilizar la etiqueta de fragmento auxiliar no crítico eXIf
. [43]
Los primeros navegadores web no admitían imágenes PNG; JPEG y GIF fueron los principales formatos de imagen. JPEG se usaba comúnmente al exportar imágenes que contienen degradados para páginas web, debido a la profundidad de color limitada de GIF. Sin embargo, la compresión JPEG hace que el degradado se difumine ligeramente. Un formato PNG reproduce un degradado con la mayor precisión posible para una profundidad de bits determinada, manteniendo el tamaño del archivo pequeño. PNG se convirtió en la opción óptima para imágenes pequeñas con degradado, ya que mejoró la compatibilidad con el formato del navegador web. No se necesitan imágenes para mostrar degradados en los navegadores modernos, ya que los degradados se pueden crear utilizando CSS .
JPEG-LS
JPEG-LS es un formato de imagen del Joint Photographic Experts Group , aunque mucho menos conocido y admitido que el otro formato JPEG con pérdida mencionado anteriormente. Es directamente comparable con PNG, [ aclaración necesaria ] y tiene un conjunto estándar de imágenes de prueba. [44] En el Waterloo Repertoire ColorSet, un conjunto estándar de imágenes de prueba (no relacionado con el conjunto de prueba de conformidad JPEG-LS), JPEG-LS generalmente funciona mejor que PNG, en un 10-15%, pero en algunas imágenes PNG funciona sustancialmente mejor , del orden del 50-75%. [45] Por lo tanto, si ambos formatos son opciones y el tamaño del archivo es un criterio importante, se deben considerar ambos, dependiendo de la imagen.
PELEA
El formato de archivo de imagen etiquetado (TIFF) es un formato que incorpora una amplia gama de opciones. Si bien esto hace que TIFF sea útil como formato genérico para el intercambio entre aplicaciones de edición de imágenes profesionales, hace que agregar soporte a las aplicaciones sea una tarea mucho más grande y, por lo tanto, tiene poco soporte en aplicaciones que no se ocupan de la manipulación de imágenes (como los navegadores web). El alto nivel de extensibilidad también significa que la mayoría de las aplicaciones proporcionan solo un subconjunto de características posibles, lo que puede generar confusión en el usuario y problemas de compatibilidad.
El algoritmo de compresión sin pérdidas de uso general más común que se utiliza con TIFF es Lempel – Ziv – Welch (LZW). Esta técnica de compresión, también utilizada en GIF, estuvo protegida por patentes hasta 2003. TIFF también admite el algoritmo de compresión que utiliza PNG (es decir, Compression Tag 0008 16 ' estilo Adobe ') con un uso medio y soporte por aplicaciones. TIFF también ofrece algoritmos de compresión sin pérdida de propósito especial como CCITT Group IV , que puede comprimir imágenes binivel (por ejemplo, faxes o texto en blanco y negro) mejor que el algoritmo de compresión de PNG.
PNG solo admite alfa no premultiplicado [29], mientras que TIFF también admite alfa "asociado" (premultiplicado).
Soporte de software
La implementación de referencia oficial del formato PNG es la biblioteca de programación libpng . [46] Se publica como software libre bajo los términos de una licencia de software libre permisiva . Por lo tanto, generalmente se encuentra como una biblioteca de sistema importante en los sistemas operativos libres.
Compatibilidad con el editor de gráficos de mapa de bits para PNG
El formato PNG es ampliamente compatible con programas de gráficos, incluidos Adobe Photoshop , Corel 's Photo-Paint y Paint Shop Pro , GIMP , GraphicConverter , Helicon Filter , ImageMagick , Inkscape , IrfanView , Pixel image editor, Paint.NET y Xara Photo & Diseñador gráfico y muchos otros. Algunos programas incluidos con populares sistemas operativos que soportan PNG incluyen Microsoft 's pintura y de Apple ' s Fotos / iPhoto y vista previa , con el GIMP también está incluido con frecuencia populares de Linux distribuciones.
Adobe Fireworks (anteriormente de Macromedia ) utiliza PNG como formato de archivo nativo, lo que permite que otros editores de imágenes y utilidades de vista previa vean la imagen acoplada. Sin embargo, Fireworks también almacena de forma predeterminada metadatos para capas, animaciones, datos vectoriales, texto y efectos. Estos archivos no deben distribuirse directamente. En su lugar, Fireworks puede exportar la imagen como PNG optimizado sin los metadatos adicionales para su uso en páginas web, etc. [ cita requerida ]
Soporte de navegador web para PNG
La compatibilidad con PNG apareció por primera vez en 1997, en Internet Explorer 4.0b1 (32 bits solo para NT) y en Netscape 4.04. [47]
A pesar de los llamamientos de la Free Software Foundation [48] y el World Wide Web Consortium (W3C), [49] herramientas como gif2png, [50] y campañas como Burn All GIFs, [51] la adopción de PNG en sitios web fue bastante lenta debido a soporte tardío y con errores en Internet Explorer, particularmente en lo que respecta a la transparencia. [52]
Los navegadores compatibles con PNG incluyen: Apple Safari , Google Chrome , Mozilla Firefox , Opera , Camino , Internet Explorer 7 (todavía hay numerosos problemas), [53] Internet Explorer 8 (todavía algunos problemas), Internet Explorer 9 y muchos otros. Para ver la comparación completa, consulte Comparación de navegadores web (compatibilidad con formato de imagen) .
Especialmente las versiones de Internet Explorer (Windows) inferiores a 9.0 (lanzadas en 2011) tienen numerosos problemas que le impiden representar correctamente las imágenes PNG. [53]
- 4.0 se bloquea en trozos grandes de PNG. [54]
- 4.0 no incluye la funcionalidad para ver archivos .png, [55] pero hay una corrección de registro. [53]
- 5.0 y 5.01 tienen soporte OBJECT roto. [56]
- 5.01 imprime imágenes de paleta con fondos negros (o gris oscuro) en Windows 98, a veces con colores radicalmente alterados. [57]
- 6.0 no muestra imágenes PNG de 4097 o 4098 bytes de tamaño. [58]
- 6.0 no puede abrir un archivo PNG que contiene uno o más fragmentos IDAT de longitud cero. Este problema se solucionó por primera vez en la actualización de seguridad 947864 (MS08-024). Para obtener más información, consulte este artículo en Microsoft Knowledge Base: 947864 MS08-024: Actualización de seguridad acumulativa para Internet Explorer. [59]
- 6.0 a veces pierde completamente la capacidad de mostrar archivos PNG, pero hay varias correcciones. [60]
- 6.0 y versiones inferiores tienen soporte de transparencia de canal alfa roto (en su lugar, se mostrará el color de fondo predeterminado). [61] [62] [63]
- 7.0 y versiones anteriores no pueden combinar la transparencia alfa de 8 bits Y la opacidad del elemento ( CSS - filtro: Alfa (opacidad = xx)) sin rellenar las secciones parcialmente transparentes con negro. [64]
- 8.0 y versiones inferiores tienen soporte gamma inconsistente / roto. [53]
- 8.0 y versiones posteriores no tienen soporte para corrección de color. [53]
Soporte del sistema operativo para iconos PNG
Los iconos PNG han sido compatibles con la mayoría de las distribuciones de Linux desde al menos 1999, en entornos de escritorio como GNOME . [65] En 2006, se introdujo en Windows Vista el soporte de Microsoft Windows para iconos PNG . [66] Los iconos PNG también son compatibles con AmigaOS 4 , AROS , macOS , iOS y MorphOS . Además, Android hace un uso extensivo de PNG.
Software de optimización y tamaño de archivo
El tamaño del archivo PNG puede variar significativamente dependiendo de cómo esté codificado y comprimido; esto se discute y se dan varios consejos en PNG: La guía definitiva. [45]
Comparado con GIF
En comparación con los archivos GIF , un archivo PNG con la misma información (256 colores, sin fragmentos / metadatos auxiliares), comprimido por un compresor efectivo, es normalmente más pequeño que una imagen GIF. Dependiendo del archivo y del compresor, PNG puede variar de algo más pequeño (10%) a significativamente más pequeño (50%) a algo más grande (5%), pero rara vez es significativamente más grande [45] para imágenes grandes. Esto se atribuye al rendimiento de DEFLATE de PNG en comparación con LZW de GIF , y porque la capa de precompresión agregada de los filtros predictivos de PNG tiene en cuenta la estructura de imagen bidimensional para comprimir aún más los archivos; dado que los datos filtrados codifican las diferencias entre los píxeles, tenderán a agruparse más cerca de 0, en lugar de extenderse por todos los valores posibles y, por lo tanto, DEFLATE los comprime más fácilmente. Sin embargo, algunas versiones de Adobe Photoshop , CorelDRAW y MS Paint proporcionan una compresión PNG deficiente, lo que da la impresión de que GIF es más eficiente. [45]
Factores de tamaño de archivo
Los archivos PNG varían en tamaño debido a varios factores:
- profundidad del color
- La profundidad de color puede variar de 1 a 64 bits por píxel.
- trozos auxiliares
- PNG admite metadatos; esto puede ser útil para editar, pero innecesario para ver, como en sitios web.
- entrelazado
- Como cada paso del algoritmo Adam7 se filtra por separado, esto puede aumentar el tamaño del archivo. [45]
- filtrar
- Como etapa de precompresión, cada línea se filtra mediante un filtro predictivo, que puede cambiar de una línea a otra. Como el último paso DEFLATE opera sobre los datos filtrados de la imagen completa, no se puede optimizar esta fila por fila; la elección del filtro para cada fila es, por tanto, potencialmente muy variable, aunque existen heurísticas. [nota 1]
- compresión
- Con cálculo adicional, los compresores DEFLATE pueden producir archivos más pequeños.
Por lo tanto, existe una compensación entre la alta profundidad de color, los metadatos máximos (incluida la información del espacio de color, junto con la información que no afecta la visualización), el entrelazado y la velocidad de compresión, que producen archivos grandes, con menor profundidad de color, menos o sin trozos auxiliares, sin entrelazado y filtrado y compresión ajustados pero computacionalmente intensivos. Para diferentes propósitos, se eligen diferentes compensaciones: un archivo máximo puede ser mejor para archivar y editar, mientras que un archivo simplificado puede ser mejor para usar en un sitio web, y se prefiere una compresión igualmente rápida pero pobre cuando se edita y guarda repetidamente un archivo. archivo, mientras que se prefiere una compresión lenta pero alta cuando un archivo es estable: al archivar o publicar. El entrelazado es una compensación: acelera drásticamente el procesamiento temprano de archivos grandes (mejora la latencia), pero puede aumentar el tamaño del archivo (disminuir el rendimiento) para obtener poca ganancia, particularmente para archivos pequeños. [45]
Compresión PNG con pérdida
Aunque PNG es un formato sin pérdida, los codificadores PNG pueden preprocesar datos de imagen con pérdida para mejorar la compresión PNG. Por ejemplo, la cuantificación de un PNG de color verdadero a 256 colores permite utilizar el tipo de color indexado para una posible reducción del tamaño del archivo. [67]
Software de edición de imágenes
Algunos programas son más eficientes que otros al guardar archivos PNG, esto se relaciona con la implementación de la compresión PNG utilizada por el programa.
Muchos programas de gráficos (como el software Preview de Apple) guardan archivos PNG con grandes cantidades de metadatos y datos de corrección de color que generalmente no son necesarios para la visualización en la Web . Los archivos PNG no optimizados de Adobe Fireworks también son conocidos por esto, ya que contienen opciones para hacer que la imagen sea editable en editores compatibles. Además, CorelDRAW (al menos la versión 11) a veces produce archivos PNG que no se pueden abrir con Internet Explorer (versiones 6–8).
El rendimiento de Adobe Photoshop en archivos PNG ha mejorado en CS Suite cuando se usa la función Guardar para Web (que también permite el uso explícito de PNG / 8).
Fireworks de Adobe guarda archivos PNG más grandes que muchos programas de forma predeterminada. Esto se deriva de la mecánica de su Guardar formato: las imágenes producidas por fuegos artificiales función de ahorro incluyen trozos grandes, privado, que contienen información de la capa y el vector completo. Esto permite una mayor edición sin pérdidas. Cuando se guardan con la opción Exportar , los PNG de Fireworks son competitivos con los producidos por otros editores de imágenes, pero ya no se pueden editar como nada más que mapas de bits aplanados. Fireworks no puede guardar archivos PNG editables por vectores de tamaño optimizado.
Otros ejemplos notables de compresores PNG deficientes incluyen:
- Paint de Microsoft para Windows XP
- Microsoft Picture It! Fotografía Premium 9
Una compresión deficiente aumenta el tamaño del archivo PNG, pero no afecta la calidad de la imagen ni la compatibilidad del archivo con otros programas.
Cuando la profundidad de color de una imagen de color verdadero se reduce a una paleta de 8 bits (como en GIF), los datos de la imagen resultante suelen ser mucho más pequeños. Por lo tanto, un PNG de color verdadero suele ser más grande que un GIF con reducción de color, aunque PNG podría almacenar la versión con reducción de color como un archivo con paleta de tamaño comparable. Por el contrario, algunas herramientas, al guardar imágenes como PNG, las guardan automáticamente como color verdadero, incluso si los datos originales usan solo color de 8 bits, por lo que el archivo se hincha innecesariamente. [45] Ambos factores pueden llevar a la idea errónea de que los archivos PNG son más grandes que los archivos GIF equivalentes.
Optimización de herramientas
Hay varias herramientas disponibles para optimizar archivos PNG; ellos hacen esto por:
- (opcionalmente) eliminar fragmentos auxiliares,
- reduciendo la profundidad del color, ya sea:
- use una paleta (en lugar de RGB) si la imagen tiene 256 colores o menos,
- use una paleta más pequeña, si la imagen tiene 2, 4 o 16 colores, o
- (opcionalmente) descartar con pérdida algunos de los datos de la imagen original,
- optimizar la elección del filtro línea por línea, y
- optimizando la compresión DEFLATE.
Lista de herramientas
- pngcrush es el más antiguo de los populares optimizadores de PNG. Permite múltiples pruebas sobre la selección de filtros y los argumentos de compresión, y finalmente elige el más pequeño. Este modelo de trabajo se utiliza en casi todos los optimizadores de png.
- OptiPNG se inspiró en pngcrush, pero itera sobre una gama más amplia de parámetros de compresión y realiza pruebas en la memoria para una ejecución más rápida. [68] El propósito principal de OptiPNG es reducir el tamaño del flujo de datos PNG IDAT probando varios métodos de filtrado y compresión. También realiza una reducción automática de la profundidad de bits, el tipo de color y la paleta de colores cuando es posible, y puede corregir algunos errores de integridad de los datos en los archivos de entrada. (pngcrush tiene la capacidad de realizar reducción de color en una versión posterior).
- advpng y la utilidad advdef similar en el paquete AdvanceCOMP recomprimen PNG IDAT. Diferentes implementaciones desinflar se aplican en función del nivel de compresión seleccionado, la negociación entre la velocidad y tamaño de archivo: zlib en el nivel 1, libdeflate en el nivel 2, 7-zip 's LZMA DEFLATE en el nivel 3, y zopfli en el nivel 4.
- pngout se hizo con el deflactor del propio autor (lo mismo que la utilidad zip del autor, kzip), manteniendo todas las facilidades de reducción / filtrado de color. Sin embargo, pngout no permite el uso de varias pruebas en filtros en una sola ejecución. Se sugiere usar su versión comercial de GUI, pngoutwin, o usarse con un contenedor para automatizar las pruebas o recomprimir usando su propio deflactor mientras se mantiene el filtro línea por línea. [nota 2]
- zopflipng también se hizo con un deflactor propio, zopfli. Tiene todas las características de optimización que tienen optipng y pngcrush (incluidas las pruebas de automatización) a la vez que proporciona un deflater muy bueno, pero lento.
A continuación se muestra una comparación simple de sus características.
Optimizador | Eliminación de trozos | Reducción de color | Filtración | Reutilización de filtros [nota 3] | Varias pruebas de filtros en una sola ejecución | Deflater [nota 4] |
---|---|---|---|---|---|---|
advpng | sí | No [nota 5] | 0 | No | N / A [nota 6] | (múltiple) |
advdef | No | No | Reutiliza el conjunto de filtros anterior | Siempre | N / A | (múltiple) |
OptiPNG | sí | sí | 0–4 o adaptativo | No | sí | zlib |
png aplastar | sí | sí | 0–4 o adaptativo | No | sí | zlib |
pngout | sí | sí | 0–4 o adaptativo | Sí [nota 2] | No | kzip |
zopflipng | sí | sí | 0–4 o adaptativo con 2 algoritmos diferentes, o de forma bruta | sí | sí | zopfli |
Antes de que zopflipng estuviera disponible, una buena forma en la práctica de realizar una optimización png es usar una combinación de 2 herramientas en secuencia para una compresión óptima: una que optimiza los filtros (y elimina los fragmentos auxiliares) y otra que optimiza DEFLATE. Aunque pngout ofrece ambos, solo se puede especificar un tipo de filtro en una sola ejecución, por lo tanto, se puede usar con una herramienta de envoltura o en combinación con optipng o pngcrush , [nota 2] actuando como un re-deflater, como advdef.
Eliminación de fragmentos auxiliares
Para eliminar fragmentos auxiliares, la mayoría de las herramientas de optimización PNG tienen la capacidad de eliminar todos los datos de corrección de color de los archivos PNG (gamma, balance de blancos, perfil de color ICC, perfil de color RGB estándar). Esto a menudo da como resultado tamaños de archivo mucho más pequeños. Por ejemplo, las siguientes opciones de línea de comando logran esto con pngcrush:
pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB InputFile.png OutputFile.png
Los fragmentos auxiliares también se pueden eliminar sin pérdidas utilizando el programa gratuito Win32 PNGExtra .
Optimización de filtros
OptiPNG, pngcrush, pngout y zopflipng ofrecen opciones aplicando uno de los tipos de filtro 0–4 globalmente (usando el mismo tipo de filtro para todas las líneas) o con un "pseudo filtro" (numerado 5), que para cada línea elige uno de los tipos de filtro 0–4 utilizando un algoritmo adaptativo. Zopflipng ofrece 3 métodos adaptativos diferentes, incluida una búsqueda de fuerza bruta que intenta optimizar el filtrado. [nota 7]
pngout y zopflipng proporcionan una opción para conservar / reutilizar [nota 2] [nota 8] el conjunto de filtros línea por línea presente en la imagen de entrada.
OptiPNG, pngcrush y zopflipng ofrecen opciones para probar diferentes estrategias de filtrado en una sola ejecución y elegir la mejor. La versión de línea de comandos gratuita de pngout no ofrece esto, pero la versión comercial, pngoutwin, sí. [nota 9]
Optimización de DESINFLADO
zopfli y LZMA SDK emplean implementaciones DEFLATE que producen relaciones de compresión más altas que la implementación de referencia zlib a costa del rendimiento. AdvanceCOMP 's advpng
, y advdef
se puede utilizar cualquiera de estas bibliotecas para volver a comprimir los archivos PNG. Además, PNGOUT contiene su propia implementación DEFLATE patentada .
advpng
no tiene una opción para aplicar filtros y siempre usa el filtro 0 globalmente (dejando los datos de la imagen sin filtrar); por lo tanto, no debe usarse donde la imagen se beneficie significativamente del filtrado. Por el contrario, advdef
el mismo paquete no se ocupa de la estructura PNG y actúa solo como un re-deflater, conservando cualquier configuración de filtro existente.
Optimización de iconos
Dado que los iconos destinados a Windows Vista y versiones posteriores pueden contener subimágenes PNG, las optimizaciones también se pueden aplicar a ellos. Al menos un editor de iconos , Pixelformer , puede realizar un pase de optimización especial mientras guarda archivos ICO , reduciendo así sus tamaños. FileOptimizer (mencionado anteriormente) también puede manejar archivos ICO.
Los iconos de macOS también pueden contener subimágenes PNG, pero no existe dicha herramienta disponible.
Ver también
- Gráficos por computadora , que incluyen:
- Comparación de motores de navegador (soporte de gráficos)
- Edición de imagen
- Formatos de archivo de imagen
- Formatos de archivo de gráficos relacionados
- APNG PNG animado
- Gráficos de red JPEG (JNG)
- Gráficos de red de múltiples imágenes (MNG)
- Formatos de archivo similares
- X PixMap para iconos portátiles
- gráficas vectoriales escalables
- WebP
- IrfanView
Notas
- ^ El filtrado se utiliza para aumentar la similitud con los datos, aumentando así la relación de compresión. Sin embargo, teóricamente no existe una fórmula para la similitud, ni una relación absoluta entre la similitud y el compresor, por lo tanto, a menos que se realice la compresión, no se puede decir que un conjunto de filtros es mejor que otro.
- ^ a b c d Use pngout -f6 para reutilizar el conjunto de filtros anterior
- ^ Las herramientas que ofrecen esta característica podrían actuar como un puro re-deflactor de archivos PNG.
- ^ zlib , la implementación de deflación de referencia, la compresión es subóptima incluso en el nivel máximo. Consulte Zopfli , formato zip en 7-zip y pngout .
- ^ No solo advpng no admite la reducción de color, también falla con las imágenes con un espacio de color reducido
- ^ Advpng solo puede aplicar el filtro 0 globalmente, por lo que no es ni sí ni no, sino N / A.
- ^ [optipng | pngcrush | pngout] -f O zopflipng --filtros
- ^ zopflipng --filtros = p
- ^ El diálogo de configuración de Pngoutwin para la optimización ofrece al usuario una selección de estrategias de filtrado.
Referencias
- ^ a b c "ISO / IEC 15948: 2004 - Tecnología de la información - Procesamiento de imágenes y gráficos por computadora - Gráficos de red portátiles (PNG): Especificación funcional" . Consultado el 19 de febrero de 2011 .
- ^ "Historia de PNG" . Libpng.org. 29 de mayo de 2010 . Consultado el 20 de octubre de 2010 .
- ^ "Norma IEC (alcance)" . 10 de noviembre de 2003.
- ^ "Definición de sustantivo PNG del Oxford Advanced Learner's Dictionary" . Diccionarios de aprendizaje de Oxford . Consultado el 21 de enero de 2018 .
- ^ T. Boutell; et al. (Marzo de 1997). "Versión 1.0 de la especificación de PNG (Gráficos de red portátiles)" . RFC 2083 . IESG . segundo. 3. doi : 10.17487 / RFC2083 .
- ^ "Registro de imagen / png de nuevo tipo de medio" . IANA . 27 de julio de 1996.
- ^ TBH (6 de enero de 1995). "Pensamientos sobre un formato de archivo de reemplazo GIF" . Groups.google.com . Consultado el 20 de octubre de 2010 .
- ^ "Estándar PNG, sección 8.4" .
PNG en sí es estrictamente un formato de una sola imagen. (...) En el futuro, se puede definir un formato de imágenes múltiples basado en PNG. Dicho formato se considerará un formato de archivo independiente.
- ^ Thomas Boutell (1 de marzo de 1997). "Especificación 1.0 de PNG (Gráficos de red portátiles)" .
- ^ Firma de archivo PNG
- ^ Diseño de fragmentos
- ^ a b https://books.google.com/books?id=lvMxDwAAQBAJ&pg=PT686#v=onepage&f=false - "Cada mandril [tiene ...]: longitud, un tipo de fragmento, los datos de fragmento y un 32 -bit CRC. La longitud es un entero sin signo de 32 bits que indica el tamaño de solo el campo de datos de fragmentos "
- ^ https://books.google.com/books?id=lvMxDwAAQBAJ&pg=PT686 - "El tipo de fragmento es un código FourCC de 32 bits, como IHDR, IDAT o IEND".
- ^ a b "Especificación de gráficos de red portátiles (PNG) (segunda edición)" . W3.org . Consultado el 8 de agosto de 2016 .
- ^ "Especificación de gráficos de red portátiles (PNG) (segunda edición)" . W3.org . Consultado el 1 de mayo de 2013 .
- ^ https://www.w3.org/TR/PNG/#11IEND
- ^ "Especificación de gráficos de red portátiles (PNG) (segunda edición) Tecnología de la información - Gráficos de computadora y procesamiento de imágenes - Gráficos de red portátiles (PNG): Especificación funcional. ISO / IEC 15948: 2003 (E) Recomendación W3C 10 de noviembre de 2003" .
- ^ Thomas Kopp (17 de abril de 2008). "Firmas digitales PNG: especificación de extensión" .
- ^ "Extensiones de la especificación PNG 1.2, versión 1.5.0" .
- ^ https://www.w3.org/TR/PNG/#11gAMA
- ^ https://www.w3.org/TR/PNG/#11pHYs - editor: David Duce, Universidad de Oxford Brookes
- ^ https://www.w3.org/TR/PNG/#11sBIT - titulado "Especificación de gráficos de red portátiles (PNG) (segunda edición)", 10 bytes en total - tipo de color 2 y 3 en total 3 bytes
- ^ https://www.w3.org/TR/PNG-Chunks.html - titulado "Especificación de PNG (Gráficos de red portátiles) \ Versión 1.0"> 4.2.6. sBIT Bits significativos, 13 bytes en total - tipo de color 2 y 3 totalizan 6 bytes
- ^ http://www.libpng.org/pub/png/book/chapter11.html#png.ch11.div.7 - quote: "Las imágenes en escala de grises son las más simples; sBIT contiene un solo byte que indica el número de bits significativos en los datos de origen "
- ^ http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html#C.sRGB
- ^ https://www.w3.org/TR/PNG/index-noobject.html#11sRGB - "Especificación de gráficos de red portátiles (PNG) (segunda edición)" (la segunda edición es la última edición)
- ^ "Noticias de PNG de 2006" . Libpng.org.
- ^ Especificación de gráficos de red portátiles (PNG) (segunda edición): 11.2.2 encabezado de imagen IHDR .
- ^ a b "Especificación PNG: Justificación" . w3.org .
- ^ "Especificación de gráficos de red portátiles (PNG) (segunda edición): 9 filtros" . W3.org . Consultado el 20 de octubre de 2010 .
- ^ "Filtrar algoritmos" . Especificación PNG .
- ^ Paeth, Alan W. (1991). Arvo, James (ed.). "Compresión de archivos de imagen fácil". Gemas de gráficos 2 . Prensa académica, San Diego: 93–100. doi : 10.1016 / B978-0-08-050754-5.50029-3 . ISBN 0-12-064480-0.
- ^ Crocker, Lee Daniel (julio de 1995). "PNG: el formato gráfico de red portátil" . Diario del Dr. Dobb . 20 (232): 36–44.
- ^ "Introducción a PNG" . nuwen.net . Consultado el 20 de octubre de 2010 .
- ^ a b "Puedo usar ... Tablas de soporte para HTML5, CSS3, etc." . caniuse.com . Consultado el 6 de febrero de 2021 .
- ^ "iOS 8 y iPhone 6 para desarrolladores y diseñadores web: próxima evolución para Safari y aplicaciones web nativas" . mobilexweb.com. 17 de septiembre de 2014 . Consultado el 24 de septiembre de 2014 .
- ^ scroggo (14 de marzo de 2017). "cromo / cromo / src / 7d2b8c45afc9c0230410011293cc2e1dbb8943a7" . chromium.googlesource.com . Consultado el 31 de marzo de 2017 .
- ^ chrome-cron; et al. (27 de marzo de 2017). "cromo / cromo / src / 59.0.3047.0..59.0.3053.0" . chromium.googlesource.com . Consultado el 31 de marzo de 2017 .
- ^ "Votación fallida: APNG 20070405a" . 20 de abril de 2007. Archivado desde el original el 3 de febrero de 2008.
- ^ "Comparación de propuesta de animación de Grupo PNG + software de prueba" . xs4all.nl . Archivado desde el original el 24 de enero de 2009.
- ^ "Una introducción básica a las características de PNG" . Libpng.org . Consultado el 20 de octubre de 2010 .
- ^ "GIF, PNG, JPG. ¿Cuál usar?" . Sitepoint.com. 3 de agosto de 2009 . Consultado el 20 de octubre de 2010 .
- ^ "Extensiones de la especificación PNG 1.2, versión 1.5.0" . Consultado el 5 de mayo de 2020 .
- ^ "T.87: Compresión sin pérdida y casi sin pérdida de imágenes fijas de tono continuo - Línea de base" . Unión Internacional de Telecomunicaciones . Consultado el 20 de marzo de 2011 .
- ^ a b c d e f g Capítulo 9. Compresión y filtrado , en PNG: La guía definitiva por Greg Roelofs.
- ^ "libpng" . Consultado el 13 de julio de 2013 .
- ^ "Uso de imágenes PNG para mostrar datos" . Centro de Ciencias del Agua de Oregon. 16 de febrero de 2006.
- ^ "Por qué no hay archivos GIF en las páginas web GNU" . Sistema operativo GNU . 16 de diciembre de 2008.
- ^ "Hoja de datos de PNG" . Consorcio World Wide Web . 7 de octubre de 1996.
- ^ "Página de recursos para gif2png 2.5.11" . catb.org .
- ^ "Grabar todos los GIF" . burnallgifs.org .
- ^ "Transparencia PNG en Internet Explorer" . Revista de PC . 5 de octubre de 2004.
- ^ a b c d e "Navegadores con soporte PNG" . 14 de marzo de 2009.
- ^ "El Explorador de Windows se bloquea cuando hago clic en un archivo PNG de Fireworks para verlo" . Adobe Systems . 5 de junio de 2007.
- ^ "No se pueden ver imágenes .png con Internet Explorer 4.0" . Base de conocimientos de Microsoft .
- ^ "Los PNG que están dentro de una etiqueta de objeto se imprimen como una imagen negativa" . Base de conocimientos de Microsoft .
- ^ "Las imágenes PNG se imprimen incorrectamente en Internet Explorer 5.01" . Base de conocimientos de Microsoft .
- ^ "No puede ver algunas imágenes PNG en Internet Explorer 6" . Base de conocimientos de Microsoft .
- ^ "No puede utilizar Internet Explorer 6 para abrir un archivo PNG que contenga uno o más fragmentos IDAT de longitud cero" . Base de conocimientos de Microsoft .
- ^ "Preguntas frecuentes sobre PNG" .
- ^ "Doctorado: los gráficos de red portátiles pierden transparencia en el navegador web" . Base de conocimientos de Microsoft .
- ^ "Los archivos PNG no muestran transparencia en Internet Explorer" . Base de conocimientos de Microsoft .
- ^ Lovitt, Michael (21 de diciembre de 2002). "Opacidad variable entre navegadores con PNG: una solución real" . Una lista aparte . Archivado desde el original el 22 de agosto de 2011 . Consultado el 21 de julio de 2009 .
- ^ "IE7 alpha transparente PNG + opacidad" . Canal 9 . Archivado desde el original el 27 de agosto de 2011 . Consultado el 23 de enero de 2009 .
- ^ Fulbright, Michael (1999). "Hoja de ruta de la biblioteca GNOME 1.0" . Archivado desde el original el 30 de enero de 2010 . Consultado el 19 de diciembre de 2007 .
- ^ "Windows Vista - Iconos" . OOne . 2007 . Consultado el 12 de noviembre de 2007 .
- ^ "PNG puede ser un formato con pérdida" . Pngmini.com . Consultado el 1 de febrero de 2014 .
- ^ Truţa, Cosmin. "Una guía para la optimización de PNG" .
Otras lecturas
- Roelofs, Greg (abril de 1997). "Gaceta de Linux: historia del formato de gráficos de red portátiles (PNG)" . Diario de Linux . Consultores de sistemas especializados, Inc. 1997 (36es). ISSN 1075-3583 .
- Roelofs, Greg (2003). PNG: La guía definitiva (2ª ed.). O'Reilly Media. ISBN 1-56592-542-4.
enlaces externos
- Página de inicio PNG
- Página de inicio de libpng
- La historia de PNG por Greg Roelofs
- Especificación W3 PNG
- Prueba de imágenes PNG en línea
- RFC 2083
- Más información sobre corrección de color PNG
- La biblioteca GD para generar archivos PNG dinámicos con PHP
- Una guía para la optimización de PNG
- Adam7 PNG entrelazado
- Codificación de Web Shells en archivos PNG : codificación de datos legibles por humanos dentro de un bloque IDAT.