Articulo de referencia

PNG

\n[[File:PNG transparency demonstration 1.png|280px]]\n "},"caption":{"wt":"A PNG image of four differently colored [[dice]] with an 8-bit transparency channel, overlaid onto a ...

Portable Network Graphics ( PNG , pronunciado oficialmente / p ɪ ŋ / PING , [ 3 ] [ 4 ] pronunciado coloquialmente / ˌ p ɛ n ˈ / PEE -en- JEE [ 5 ] ) es un formato de archivo de gráficos rasterizados que admite compresión de datos sin pérdida . [ 6 ] PNG se desarrolló como un reemplazo mejorado y no patentado del formato de intercambio de gráficos (GIF).

PNG admite imágenes basadas en paletas (con paletas de colores RGB de 24 bits o RGBA de 32 bits ), imágenes en escala de grises (con o sin canal alfa para transparencia) e imágenes RGB o RGBA a todo color sin paleta. El grupo de trabajo de PNG diseñó el formato para la transferencia de imágenes en Internet , no para gráficos de impresión de calidad profesional; por lo tanto, no admite espacios de color distintos de RGB , como CMYK . Un archivo PNG contiene una sola imagen en una estructura extensible de fragmentos , que codifica los píxeles básicos y otra información, como comentarios textuales y comprobaciones de integridad documentadas en RFC 2083. [ 7 ]

Los archivos PNG tienen la extensión de archivo ".png" y el tipo de medio MIME "image/png" . [ 8 ] PNG se publicó como un RFC informativo 2083 en marzo de 1997 y como el estándar ISO/IEC 15948:2004 en 2004. [ 1 ]

Historia y desarrollo

La motivación para crear el formato PNG fue el anuncio del 28 de diciembre de 1994 de que las implementaciones del formato Graphics Interchange Format (GIF) tendrían que pagar regalías a Unisys debido a su patente del algoritmo de compresión de datos Lempel–Ziv–Welch (LZW) utilizado en GIF. [ 9 ] Esto provocó una oleada de críticas por parte de los usuarios de Usenet . Uno de ellos fue Thomas Boutell, quien el 4 de enero de 1995 publicó un hilo de discusión precursor en el grupo de noticias de Usenet "comp.graphics" en el que ideó un plan para una alternativa gratuita a GIF. Otros usuarios en ese hilo presentaron muchas propuestas que luego formarían parte del formato de archivo final. Oliver Fromme, autor del popular visor de JPEG QPEG , propuso el nombre PING, que finalmente se convirtió en PNG, un acrónimo recursivo que significa PING no es GIF , [ 10 ] [ 11 ] y también la extensión .png . Otras sugerencias que se implementaron posteriormente incluyeron el algoritmo de compresión deflate y la compatibilidad con color de 24 bits ; la falta de esta última en GIF también motivó al equipo a crear su propio formato de archivo. El grupo se conocería como el Grupo de Desarrollo PNG, y a medida que la discusión se expandió rápidamente, posteriormente utilizó una lista de correo asociada con un foro de CompuServe . [ 3 ] [ 12 ]

La especificación completa de PNG fue publicada con la aprobación del Consorcio World Wide Web (W3C) el 1 de octubre de 1996, y posteriormente como RFC 2083 el 15 de enero de 1997. La especificación fue revisada el 31 de diciembre de 1998 como la versión 1.1, que abordó problemas técnicos para la corrección gamma y de color . La versión 1.2, publicada el 11 de agosto de 1999, agregó el fragmento iTXt como el único cambio de la especificación, y una versión reformateada de la 1.2 fue publicada como una segunda edición del estándar W3C el 10 de noviembre de 2003, [ 13 ] y como un estándar internacional ( ISO/IEC 15948:2004 ) el 3 de marzo de 2004. [ 14 ] [ 1 ]

Aunque GIF permite animación , inicialmente se decidió que PNG debería ser un formato de imagen única. [ 15 ] En 2001, los desarrolladores de PNG publicaron el formato Multiple-image Network Graphics (MNG), con soporte para animación. MNG logró un soporte moderado en aplicaciones, pero no el suficiente entre los navegadores web convencionales y ningún uso entre diseñadores o editores de sitios web. En 2008, algunos desarrolladores de Mozilla publicaron el formato Animated Portable Network Graphics (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 el soporte para APNG. En enero de 2020, Microsoft Edge se basó en Chromium , heredando así el soporte para APNG. Con esto, todos los navegadores principales ahora son compatibles con APNG.

El Grupo de Trabajo PNG fue creado por el W3C el 14 de septiembre de 2021 para mantener y desarrollar la especificación PNG. La tercera edición de la especificación PNG, que añade la compatibilidad adecuada con APNG, alto rango dinámico (HDR) y datos Exif , se publicó como primer borrador público de trabajo el 25 de octubre de 2022 [ 16 ] y, finalmente, como Recomendación del W3C el 24 de junio de 2025 [ 17 ] [ 18 ].

Grupo de trabajo de PNG

La especificación PNG original fue elaborada por un grupo ad hoc de expertos y entusiastas de los 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: [ 19 ]

Formato de archivo

La imagen PNG se visualiza con una aplicación de editor hexadecimal para Ubuntu.

Encabezado del archivo

Un archivo PNG comienza con una firma de ocho bytes [ 20 ] (consulte la imagen del editor hexadecimal a la derecha):

"Fragmentos" dentro del archivo

Después del encabezado, viene una serie de fragmentos , [ 21 ] cada uno de los cuales transmite cierta información sobre la imagen. Los fragmentos se declaran como críticos o auxiliares , y un programa que encuentre un fragmento auxiliar que no entienda puede ignorarlo sin problemas. Esta estructura de capa de almacenamiento basada en fragmentos, similar en concepto a un formato contenedor o al IFF de Amiga , está diseñada para permitir que el formato PNG se extienda manteniendo la compatibilidad con versiones anteriores; proporciona compatibilidad hacia adelante , y esta misma estructura de archivo (con diferente firma y fragmentos) se utiliza en los formatos MNG , JNG y APNG asociados.

Un fragmento consta de cuatro partes: longitud (4 bytes, [ 22 ] big-endian ), tipo/nombre del fragmento (4 bytes [ 23 ] ), datos del fragmento (longitud bytes) y CRC (código de redundancia cíclica/suma de verificación; 4 bytes [ 22 ] ). El CRC es un CRC-32 de orden de bytes de red calculado sobre el tipo de fragmento y los datos del fragmento, pero no sobre la longitud.

A los tipos de fragmentos se les asigna un tipo/nombre ASCII de cuatro letras que distingue entre mayúsculas y minúsculas ; compárese con FourCC . El uso de mayúsculas y minúsculas en el nombre (bit 5 del valor numérico del carácter) es un campo de bits que proporciona al decodificador información sobre la naturaleza de los fragmentos que no reconoce.

El uso de mayúsculas y minúsculas en 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; de lo contrario, es secundario. Los fragmentos críticos contienen información necesaria para leer el archivo. Si un decodificador encuentra un fragmento crítico que no reconoce, debe interrumpir la lectura del archivo o mostrar una advertencia al usuario.

El uso de mayúsculas y minúsculas en la segunda letra indica si el fragmento es público (ya sea en la especificación o en el registro de fragmentos públicos de propósito especial) o privado (no estandarizado). Las mayúsculas indican que es público y las minúsculas, que es privado. Esto garantiza que los nombres de fragmentos públicos y privados nunca entren en conflicto (aunque sí podrían existir dos nombres de fragmentos privados).

La tercera letra debe ser mayúscula para cumplir con la especificación PNG. Está reservada para futuras expansiones. Los decodificadores deben tratar un fragmento con una tercera letra minúscula del mismo modo que cualquier otro fragmento no reconocido.

El uso de la cuarta letra indica si el fragmento puede copiarse sin problemas por editores que no lo reconocen. Si está en minúscula, el fragmento puede copiarse sin problemas, independientemente de la magnitud de las modificaciones realizadas al archivo. Si está en mayúscula, solo puede copiarse si las modificaciones no han afectado a ningún fragmento crítico.

Fragmentos críticos

Un decodificador debe ser capaz de interpretar fragmentos críticos para leer y renderizar un archivo PNG.

  • IHDRdebe ser el primer fragmento; tiene 13 bytes de datos de longitud y contiene (en este orden) la imagen.
    • ancho (4 bytes)
    • altura (4 bytes)
    • Profundidad de bits (1 byte, valores 1, 2, 4, 8 o 16): 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)". [ 13 ]
    • Tipo de color (1 byte, valores 0, 2, 3, 4 o 6)
    • Método de compresión (1 byte, valor 0)
    • Método de filtro (1 byte, valor 0)
    • Método de entrelazado (1 byte, valores 0 "sin entrelazado" o 1 " entrelazado Adam7 "). [ 13 ]
  • PLTEContiene la paleta : una lista de colores. Este fragmento es esencial para el tipo de color 3 (color indexado). Es opcional para los tipos de color dos y seis (color verdadero y color verdadero con alfa) y no debe aparecer para los tipos de color 0 y 4 (escala de grises y escala de grises con alfa).
  • IDATContiene la imagen, que puede dividirse en varios fragmentos IDAT. Esta división aumenta ligeramente el tamaño del archivo, pero permite generar un PNG de forma continua. El fragmento IDAT contiene los datos de la imagen propiamente dicha, que constituyen el flujo de salida del algoritmo de compresión. [ 24 ]
  • IENDmarca el final de la imagen; el campo de datos del fragmento IEND tiene 0 bytes/está vacío. [ 25 ]

Fragmentos auxiliares

Otros atributos de imagen que se pueden almacenar en archivos PNG incluyen valores 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 color ICC . [ 26 ]

  • bKGDProporciona el color de fondo predeterminado. Está pensado para usarse cuando no hay una mejor opción disponible, como en visores de imágenes independientes (pero no en navegadores web; consulte más abajo para obtener más detalles).
  • cHRMProporciona las coordenadas de cromaticidad de los colores primarios de la pantalla y el punto blanco .
  • cICPEspecifica el espacio de color, la función de transferencia y los coeficientes de la matriz según se definen en ITU-T H.273 . [ 27 ] Está diseñado para usarse con imágenes HDR sin necesidad de un perfil de color. [ 28 ]
  • dSIGes para almacenar firmas digitales. [ 29 ]
  • eXIfAlmacena metadatos Exif . [ 30 ] [ 31 ]
  • gAMAespecifica gamma . El fragmento gAMA contiene solo 4 bytes, y su valor representa el valor gamma multiplicado por 100 000; por ejemplo, el valor gamma 1/3,4 se calcula como 29411,7647059 ((1/3,4)*(100 000)) y se convierte a un entero (29412) para su almacenamiento. [ 32 ]
  • hISTPuede almacenar el histograma, o la cantidad total de cada color en la imagen.
  • iCCPes un perfil de color ICC .
  • iTXtContiene una palabra clave y texto UTF-8 , con codificaciones para posible compresión y traducciones marcadas con la etiqueta de idioma . La Plataforma de Metadatos Extensibles (XMP) utiliza este fragmento con la palabra clave 'XML:com.adobe.xmp'.
  • pHYsContiene el tamaño de píxel previsto (o relación de aspecto del píxel); el pHYs 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. [ 33 ]
  • sBIT(bits significativos) indica la precisión del color de los datos de origen; este bloque contiene un total de entre 1 y 5 bytes, dependiendo del tipo de color. [ 34 ] [ 35 ] [ 36 ]
  • sPLTSugiere una paleta de colores para usar si no se dispone de la gama completa de colores.
  • sRGBindica que se utiliza el espacio de color sRGB estándar; el fragmento sRGB contiene solo 1 byte, que se utiliza para la "intención de renderizado" ( se definen 4 valores 0, 1, 2 y 3 — para la intención de renderizado). [ 37 ]
  • sTERFragmento indicador de imagen estéreo para imágenes estereoscópicas . [ 38 ]
  • tEXtPuede almacenar texto que se puede representar en ISO/IEC 8859-1 , con un par clave-valor para cada fragmento. La clave debe tener entre uno y 79 caracteres. El separador es un carácter nulo. El valor puede tener cualquier longitud, desde cero hasta el tamaño máximo de fragmento permitido menos la longitud de la palabra clave y el separador. Ni la clave ni el valor pueden contener caracteres nulos. Tampoco se permiten espacios iniciales ni finales.
  • tIMEAlmacena la hora en que se modificó la imagen por última vez.
  • tRNSContiene información de transparencia. Para imágenes indexadas, almacena los valores del canal alfa para una o más entradas de la paleta. Para imágenes en color verdadero y en escala de grises, almacena un único valor de píxel que se considera totalmente transparente.
  • zTXtcontiene texto comprimido (y un marcador de método de compresión) con los mismos límites que tEXt.

Formato de píxeles

En las imágenes PNG, los píxeles son números que pueden ser índices de datos de muestra en la paleta o los propios datos de muestra. La paleta es una tabla independiente contenida en el fragmento PLTE. Los datos de muestra de un solo píxel consisten en una tupla de entre uno y cuatro números. Tanto si los datos del píxel representan índices de la paleta como 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 entero sin signo utilizando una cantidad fija de bits, denominada profundidad de bits en la especificación PNG . Cabe destacar que esto no es lo mismo que la profundidad de color , que se usa comúnmente para referirse a la cantidad total de bits en cada píxel, no en cada canal. Las profundidades de bits permitidas se resumen en la tabla junto con la cantidad 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 de si tiene un canal alfa . PNG permite las siguientes combinaciones de canales, denominadas tipo de color .

El tipo de color se especifica como un valor de 8 bits; sin embargo, solo se utilizan los tres bits menos significativos y, aun así, solo se permiten las cinco combinaciones mencionadas anteriormente. Siempre que el tipo de color sea válido, puede considerarse como un campo de bits, tal como se resume en la tabla adjunta:

  • 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 imagen contienen un canal de datos que codifica la 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 en color indexadas, la paleta siempre almacena colores tricromáticos con 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 corta que la paleta, se asume que las entradas restantes son opacas. La paleta no debe tener más entradas que 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, 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 las imágenes PNG indexadas en color 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. El resto utiliza una profundidad de bits por canal de 8 o 16. Las combinaciones permitidas se muestran en la tabla anterior. El estándar exige que los decodificadores puedan leer todos los formatos de color compatibles, pero muchos editores de imágenes solo pueden generar un pequeño subconjunto de ellos.

Transparencia de la imagen

PNG ofrece diversas opciones de transparencia. En imágenes de color verdadero y en escala de grises, se puede declarar un único valor de píxel como transparente o añadir un canal alfa (lo que permite utilizar cualquier porcentaje de transparencia parcial). En imágenes con paleta de colores, se pueden añadir valores alfa a las entradas de la paleta. El número de estos valores almacenados puede ser inferior al número total de entradas de la paleta; en ese caso, las entradas restantes se consideran totalmente opacas.

Se supone que el escaneo de los valores de píxeles para la transparencia binaria debe realizarse antes de cualquier reducción de color para evitar que los píxeles se vuelvan transparentes involuntariamente. Esto probablemente represente 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 que solo emiten a 8 bits por canal (lo que es habitual en todos los sistemas, excepto en los de gama más alta).

El almacenamiento alfa puede ser "asociado" (" premultiplicado ") o "no asociado", pero PNG estandarizó [ 39 ] el 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 operación de sobremultiplicació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 dos etapas:

  • precompresión: filtrado (predicción)
  • compresión: DESINFLAR

PNG utiliza DEFLATE , un algoritmo de compresión de datos sin pérdida no patentado que combina la codificación LZ77 y Huffman . Existen implementaciones de DEFLATE con licencia permisiva , como zlib , ampliamente disponibles.

En comparación con los formatos con compresión con pérdida , como JPEG, elegir ajustes de compresión más altos puede ralentizar el procesamiento sin reducir significativamente el tamaño del archivo.

Filtración

El método de filtro 0 de PNG puede utilizar los datos de los píxeles A, B y C para predecir el valor de X.
Un archivo PNG con 256 colores, que ocupa solo 251 bytes con el prefiltro, sería más de trece veces más grande.

Antes de aplicar DEFLATE, los datos se transforman mediante un método de predicción: se utiliza un único método de filtro para toda la imagen, mientras que para cada línea de la imagen se elige un tipo de filtro para transformar los datos y hacerlos más compresibles. [ 40 ] 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.

En la especificación PNG actual solo existe un método de filtrado (denominado método 0), por lo que, en la práctica, la única opción es determinar qué tipo de filtro aplicar a cada línea. Este método 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 al valor real, como en DPCM . Una línea de imagen filtrada de esta manera suele ser más compresible que la línea de imagen original, especialmente si es similar a la línea anterior, ya que las diferencias con respecto a la predicción generalmente se agrupan alrededor de 0, en lugar de distribuirse entre todos los posibles valores de la imagen. Esto es particularmente importante al relacionar filas separadas, ya que DEFLATE no entiende que una imagen es una entidad 2D, sino que simplemente ve los datos de la imagen como una secuencia de bytes.

Existen cinco tipos de filtro para el método de filtrado 0; cada tipo predice el valor de cada byte (de los datos de la imagen antes del filtrado) basándose en el byte correspondiente del píxel a la izquierda ( A ), el píxel superior ( B ) y el píxel superior e izquierdo ( C ) o alguna combinación de estos, y codifica la diferencia entre el valor predicho y el valor real. Los filtros se aplican a valores de byte, no a píxeles; los valores de píxel pueden ser de uno o dos bytes, o varios valores por byte, pero nunca cruzan los límites de los bytes. Los tipos de filtro son: [ 41 ]

El filtro Paeth se basa en un algoritmo de Alan W. Paeth . [ 42 ] Compárese con la versión de DPCM utilizada en JPEG sin pérdidas y con la transformada discreta de ondículas que utiliza ventanas de 1 × 2, 2 × 1 o (para el predictor Paeth) 2 × 2 y ondículas de Haar .

La compresión se mejora aún más mediante la selección adaptativa de tipos de filtro para cada línea. Esta mejora, y un método heurístico para implementarla, 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; [ 43 ] la elección del filtro es un componente de la optimización del tamaño del archivo, como se explica más adelante.

Si se utiliza el 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

Una ilustración de Adam7 entrelazándose sobre una imagen de 16×16

PNG ofrece un esquema de entrelazado opcional de 2 dimensiones y 7 pasadas : el algoritmo Adam7 . Este es más sofisticado que el esquema de 1 dimensión y 4 pasadas de GIF, y permite que una imagen de baja resolución más nítida sea visible antes en la transferencia, particularmente si se utilizan algoritmos de interpolación como la interpolación bicúbica . [ 44 ]

Sin embargo, el esquema de 7 pasadas tiende a reducir la compresibilidad de los datos más que los esquemas más simples.

Animación

Un archivo APNG (PNG animado) (se muestra como una imagen estática en algunos navegadores web )

El formato PNG básico no admite animación. MNG es una extensión de PNG que sí la admite; fue diseñada por miembros del Grupo PNG. MNG comparte la estructura y los fragmentos básicos de PNG, pero es significativamente más complejo y tiene una firma de archivo diferente, lo que lo hace incompatible con los decodificadores PNG estándar. Esto significa que la mayoría de los navegadores web y aplicaciones nunca admitieron MNG o dejaron de hacerlo.

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 una alternativa para la visualización de una sola imagen para los decodificadores PNG que no admiten APNG. Hoy en día, el formato APNG es compatible con todos los principales navegadores web. [ 45 ] APNG es compatible con Firefox 3.0 y versiones posteriores, Pale Moon (todas las versiones) y Safari 8.0 y versiones posteriores. [ 46 ] Chromium 59.0 agregó compatibilidad con APNG, [ 47 ] [ 48 ] seguido por Google Chrome. Opera admitió APNG en las versiones 10–12.1, pero la compatibilidad caducó en la versión 15 cuando cambió al motor de renderizado Blink ; la compatibilidad se volvió a agregar en Opera 46 (heredado de Chromium 59). [ 49 ] Microsoft Edge ha admitido APNG desde la versión 79.0, cuando cambió a un motor basado en Chromium.

El Grupo PNG decidió en abril de 2007 no adoptar APNG. [ 50 ] Se discutieron varias alternativas, incluyendo ANG, aNIM/mPNG, "PNG en GIF" y su subconjunto "RGBA en GIF". [ 51 ] Sin embargo, actualmente solo APNG cuenta con un amplio respaldo.

Con el lanzamiento de la tercera edición de la especificación PNG en junio de 2025, ahora mantenida por el grupo de trabajo PNG, [ 16 ] APNG finalmente se incorpora a la especificación como una extensión. [ 52 ]

Ejemplos

Se muestra al estilo de los editores hexadecimales , con los valores de bytes en formato hexadecimal a la izquierda y sus caracteres equivalentes de ISO-8859-1 a la derecha, con los caracteres de control y no reconocidos reemplazados por puntos. Los desplazamientos 8 y 9 del fragmento IDAT representan el encabezado de 2 bytes requerido por el formato de datos zlib. El desplazamiento 16 (del mismo fragmento) representa el pie de página de 4 bytes requerido por el mismo formato. Además, la firma PNG y los fragmentos individuales están marcados con colores. Cabe destacar que son fáciles de identificar debido a sus nombres de tipo legibles (en este ejemplo, PNG, IHDR, IDAT e IEND).

Ventajas

Razones para usar PNG:

  • Portabilidad : La transmisión es independiente de la plataforma de software y hardware.
  • Completitud : es posible representar imágenes en color real, en color indexado y en escala de grises.
  • Codificación y decodificación en serie : permite a los usuarios 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 ese momento a través de la comunicación en serie.
  • Presentación progresiva : poder transmitir flujos de datos que inicialmente son una aproximación de la imagen completa y que mejoran progresivamente a medida que se recibe el flujo de datos.
  • Integridad ante errores de transmisión : detecta correctamente los errores de transmisión del flujo de datos.
  • Sin pérdidas : Sin pérdida de información: el filtrado y la compresión preservan toda la información.
  • Eficiencia : cualquier presentación, compresión y filtrado progresivo de imágenes busca una decodificación y presentación eficientes.
  • Compresión : las imágenes se pueden comprimir de forma eficiente y consistente.
  • Facilidad : la implementación del estándar es sencilla.
  • Intercambiabilidad : cualquier decodificador PNG que cumpla con los estándares puede leer todos los flujos de datos PNG.
  • Flexibilidad : permite futuras ampliaciones y adiciones privadas sin afectar al punto anterior.
  • Libertad de restricciones legales : los algoritmos utilizados son libres y accesibles.

Comparación con otros formatos de archivo

Formato de intercambio de gráficos (GIF)

  • En imágenes pequeñas, el formato GIF puede lograr una mayor compresión que el formato PNG (consulte la sección sobre tamaño de archivo , más abajo).
  • En la mayoría de las imágenes, salvo en el caso mencionado anteriormente, 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, incluyendo la transparencia del canal alfa .
  • Mientras que GIF se limita a color indexado de 8 bits , PNG ofrece un rango mucho más amplio de profundidades de color, incluyendo color verdadero de 24 bits (8 bits por canal) y 48 bits (16 bits por canal) , lo que permite una mayor precisión de color, transiciones más suaves, etc. [ 55 ] Cuando se agrega un canal alfa, es posible 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 por la posterización si la imagen PNG tiene más de 256 colores.
  • GIF admite imágenes animadas de forma nativa. PNG admite animación solo mediante extensiones (consulte la sección sobre animación , más arriba).

Las imágenes PNG son menos compatibles con los navegadores antiguos. En particular, IE6 tiene una compatibilidad limitada con PNG. [ 56 ]

JPEG

Imagen compuesta que compara la compresión con pérdida en JPEG con la compresión sin pérdida en PNG: los artefactos de JPEG se pueden ver fácilmente en el fondo de este tipo de datos de imagen, mientras que la imagen PNG tiene un color sólido.

El formato JPEG (Joint Photographic Experts Group) puede producir un archivo más pequeño que PNG para imágenes fotográficas (y similares), 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 suelen estar dominados por transiciones suaves y de bajo contraste, y una cantidad de ruido o estructuras irregulares similares. Usar PNG en lugar de un JPEG de alta calidad para dichas imágenes resultaría en un gran aumento del tamaño del archivo con una ganancia de calidad insignificante . En comparación, al almacenar imágenes que contienen texto, dibujos lineales o gráficos (imágenes con transiciones nítidas y grandes áreas de color sólido), el formato PNG puede comprimir los datos de la imagen más que JPEG. Además, PNG no tiene pérdida, mientras que JPEG produce artefactos visuales alrededor de las áreas de alto contraste. (Estos artefactos dependen de la configuración utilizada en la compresión JPG; pueden ser bastante notorios cuando se utiliza una configuración de baja calidad [alta compresión]). Cuando una imagen contiene tanto transiciones nítidas como partes fotográficas, se debe elegir entre ambos efectos. JPEG no admite transparencia.

La compresión con pérdida de JPEG también sufre de pérdida generacional , donde la decodificación y recodificación repetidas de una imagen para guardarla nuevamente provocan una pérdida de información cada vez, degradando la imagen. Dado que PNG no tiene pérdida, es adecuado para almacenar imágenes que se van a 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, como WebP y Adobe DNG (negativo digital). Sin embargo, estos formatos no son ampliamente compatibles o son propietarios. Una imagen se puede almacenar sin pérdida y convertir al formato JPEG solo para su distribución, de modo que no haya pérdida generacional.

Aunque 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 usar la etiqueta de fragmento auxiliar no crítico eXIf. [ 57 ]

Los primeros navegadores web no admitían imágenes PNG; JPEG y GIF eran los formatos de imagen principales. JPEG se usaba comúnmente para exportar imágenes con degradados a páginas web, debido a la limitada profundidad de color de GIF. Sin embargo, la compresión JPEG provoca que el degradado se vea ligeramente borroso. El formato PNG reproduce un degradado con la mayor precisión posible para una profundidad de bits determinada, manteniendo un tamaño de archivo pequeño. PNG se convirtió en la opción óptima para imágenes con degradados pequeños a medida que mejoró la compatibilidad de los navegadores web con este formato. En los navegadores modernos, no se necesitan imágenes para mostrar degradados, ya que estos se pueden crear mediante CSS .

JPEG-LS

JPEG-LS es un formato de imagen del Joint Photographic Experts Group , aunque mucho menos conocido y compatible que el otro formato JPEG con pérdida mencionado anteriormente. Es directamente comparable con PNG y tiene un conjunto estándar de imágenes de prueba. [ 58 ] 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 tiene un mejor rendimiento que PNG, en un 10-15%, pero en algunas imágenes PNG tiene un rendimiento sustancialmente mejor, del orden del 50-75%. [ 59 ] Por lo tanto, si ambos formatos son opciones y el tamaño del archivo es un criterio importante, ambos deberían considerarse, dependiendo de la imagen.

JPEG XL

JPEG XL es otro formato, mucho mejorado, con o sin pérdida, que cuenta con mucho menos soporte, desarrollado para reemplazar formatos sin pérdida como PNG. [ 60 ] JPEG XL es más de un 50% más pequeño que JPEG, y esto puede ocurrir incluso siendo sin pérdida, lo que lo hace aún más pequeño que PNG. [ 61 ] También admite alto rango dinámico , amplias gamas de color y grandes profundidades de color . [ 62 ] JPEG XL también es muy eficiente en la decodificación y proporciona transiciones suaves desde los formatos que pretende reemplazar, pudiendo convertir desde JPEG sin pérdida. También destaca en la compresión sin comprometer la fidelidad. [ 63 ]

PELEA

El formato TIFF ( Tag Image File Format ) incorpora una amplia gama de opciones. Si bien esto lo convierte en un formato genérico útil para el intercambio entre aplicaciones profesionales de edición de imágenes, también dificulta enormemente la integración de soporte en otras aplicaciones, por lo que su compatibilidad es limitada en aquellas que no se dedican a la manipulación de imágenes (como los navegadores web). Su alto nivel de extensibilidad implica, además, que la mayoría de las aplicaciones solo ofrecen un subconjunto de las funciones disponibles, lo que puede generar confusión entre los usuarios y problemas de compatibilidad.

El algoritmo de compresión sin pérdidas de propósito general más común utilizado 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, la etiqueta de compresión 0008 16 ' estilo Adobe '), con un uso y soporte moderados por parte de las aplicaciones. Además, TIFF ofrece algoritmos de compresión sin pérdidas de propósito específico, como CCITT Group IV , que puede comprimir imágenes de dos niveles (por ejemplo, faxes o texto en blanco y negro) mejor que el algoritmo de compresión de PNG.

PNG solo admite alfa no premultiplicado [ 39 ] mientras que TIFF también admite alfa "asociado" (premultiplicado).

WebP

WebP es un formato inventado por Google que se creó para reemplazar a PNG, JPEG y GIF. [ 64 ] Los archivos WebP permiten compresión con y sin pérdida, mientras que PNG solo permite compresión sin pérdida. WebP también admite animación, algo que antes solo era posible con archivos GIF . [ 65 ]

Las principales ventajas de WebP sobre PNG, sin embargo, son la gran reducción del tamaño del archivo y, por lo tanto, los tiempos de carga más rápidos al incrustarse en sitios web. Google afirma que las imágenes WebP sin pérdida son un 26 % más pequeñas que los archivos PNG. [ 66 ]

WebP ha recibido críticas por ser incompatible con varios programas de edición de imágenes y sitios web de redes sociales, a diferencia de PNG. [ 67 ] WebP tampoco es compatible con todos los navegadores web, lo que puede obligar a los proveedores de alojamiento de imágenes web a crear una imagen alternativa para mostrar al usuario, anulando así el posible ahorro de almacenamiento de WebP. [ 65 ]

AVIF

AVIF es un formato de imagen desarrollado por la Alliance for Open Media . AVIF fue diseñado por la fundación para compensar las deficiencias de otros códecs de imagen, incluidos PNG, GIF y WebP . [ 68 ]

AVIF es generalmente más pequeño en tamaño que WebP y PNG. [ 69 ] AVIF admite animación mientras que PNG anteriormente no lo hacía. [ 70 ]

Sin embargo, al igual que WebP, AVIF es compatible con menos aplicaciones que PNG. [ 70 ]

Soporte de software

La implementación de referencia oficial del formato PNG es la biblioteca de programación libpng . [ 71 ] Se publica como software libre bajo los términos de una licencia de software libre permisiva . Por lo tanto, suele encontrarse como una biblioteca de sistema importante en los sistemas operativos libres.

Compatibilidad del editor de gráficos de mapa de bits con PNG

El formato PNG es compatible con una amplia gama de programas de diseño gráfico, como Adobe Photoshop , Corel Photo -Paint y Paint Shop Pro , GIMP , GraphicConverter , Helicon Filter , ImageMagick , Inkscape , IrfanView , Pixel image editor, Paint.NET y Xara Photo & Graphic Designer , entre muchos otros (incluidas plataformas de diseño gráfico en línea como Canva ). Algunos programas incluidos en sistemas operativos populares que admiten PNG son Microsoft Paint y Apple Photos / iPhoto y Vista Previa , y GIMP también suele venir incluido en distribuciones populares de Linux .

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 visualicen la imagen aplanada. Sin embargo, Fireworks también almacena metadatos de capas, animación, datos vectoriales, texto y efectos por defecto. Estos archivos no deben distribuirse directamente. En su lugar, Fireworks puede exportar la imagen como un PNG optimizado sin los metadatos adicionales para su uso en páginas web, etc. [ 72 ]

Compatibilidad de navegadores web con PNG

La compatibilidad con PNG apareció por primera vez en 1997, en Internet Explorer 4.0b1 (solo de 32 bits para NT) y en Netscape 4.04. [ 73 ]

A pesar de los llamamientos de la Free Software Foundation [ 74 ] y el World Wide Web Consortium (W3C), [ 75 ] herramientas como gif2png, [ 76 ] y campañas como Burn All GIFs, [ 77 ] la adopción de PNG en sitios web fue bastante lenta debido a la compatibilidad tardía y defectuosa en Internet Explorer, particularmente en lo que respecta a la transparencia. [ 78 ] PNG es el formato de archivo de imagen más utilizado en la web desde 2018. [ 79 ]

Entre los navegadores compatibles con PNG se incluyen: Apple Safari , Google Chrome , Mozilla Firefox , Opera , Camino , Internet Explorer , Microsoft Edge y muchos otros. Para una comparación completa, consulte Comparación de navegadores web (compatibilidad con formatos de imagen) .

Especialmente las versiones de Internet Explorer (Windows) anteriores a la 9.0 (lanzada en 2011) tenían numerosos problemas que impedían que renderizara correctamente las imágenes PNG. [ 80 ]

  • 4.0 falla en fragmentos PNG grandes. [ 81 ]
  • La versión 4.0 no incluye la funcionalidad para ver archivos .png, [ 82 ] pero hay una corrección en el registro. [ 80 ]
  • Las versiones 5.0 y 5.01 han roto la compatibilidad con OBJECT. [ 83 ]
  • 5.01 imprime imágenes de paleta con fondos negros (o gris oscuro) en Windows 98, a veces con colores radicalmente alterados. [ 84 ]
  • 6.0 no logra mostrar imágenes PNG de 4097 o 4098 bytes de tamaño. [ 85 ]
  • La versión 6.0 no puede abrir un archivo PNG que contenga 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 la Base de conocimientos de Microsoft: 947864 MS08-024: Actualización de seguridad acumulativa para Internet Explorer. [ 86 ]
  • 6.0 a veces pierde por completo la capacidad de mostrar PNG, pero hay varias soluciones. [ 87 ]
  • Las versiones 6.0 e inferiores tienen compatibilidad rota con la transparencia del canal alfa (mostrarán el color de fondo predeterminado en su lugar). [ 88 ] [ 89 ] [ 90 ]
  • Las versiones 7.0 e inferiores no pueden combinar la transparencia alfa de 8 bits Y la opacidad del elemento ( CSS – filter: Alpha (opacity=xx)) sin rellenar las secciones parcialmente transparentes con negro. [ 91 ]
  • Las versiones 8.0 e inferiores tienen soporte gamma inconsistente/defectuoso. [ 80 ]
  • Las versiones 8.0 e inferiores no tienen soporte para corrección de color. [ 80 ]

Compatibilidad del sistema operativo con 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 . [ 92 ] En 2006, Microsoft Windows introdujo la compatibilidad con iconos PNG en Windows Vista . [ 93 ] 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 para optimizar y reducir el tamaño de los archivos

El tamaño de un archivo PNG puede variar significativamente dependiendo de cómo se codifique y comprima; esto se analiza y se ofrecen varios consejos en PNG: La guía definitiva. [ 59 ]

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 eficaz, suele ser más pequeño que una imagen GIF. Dependiendo del archivo y del compresor, el tamaño de PNG puede variar desde un poco menor (10 %) hasta significativamente menor (50 %) o algo mayor (5 %), pero rara vez es significativamente mayor [ 59 ] para imágenes grandes. Esto se atribuye al rendimiento de DEFLATE de PNG en comparación con LZW de GIF , y a que la capa de precompresión adicional de los filtros predictivos de PNG tiene en cuenta la estructura bidimensional de la imagen para comprimir aún más los archivos; como los datos filtrados codifican las diferencias entre píxeles, tenderán a agruparse más cerca de 0, en lugar de estar distribuidos entre 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 ofrecen una compresión PNG deficiente, lo que crea la impresión de que GIF es más eficiente. [ 59 ]

Factores de tamaño de archivo

El tamaño de los archivos PNG varía debido a diversos factores:

profundidad de color
La profundidad de color puede variar de 1 a 64 bits por píxel.
fragmentos auxiliares
PNG admite metadatos; esto puede ser útil para la edición, pero innecesario para la visualización, como en los sitios web.
entrelazamiento
Como cada pasada del algoritmo Adam7 se filtra por separado, esto puede aumentar el tamaño del archivo. [ 59 ]
filtrar
Como etapa de precompresión, cada línea se filtra mediante un filtro predictivo, que puede variar de una línea a otra. Dado que el paso final DEFLATE opera sobre los datos filtrados de toda la imagen, no es posible optimizarlo fila por fila; por lo tanto, la elección del filtro para cada fila es potencialmente muy variable, aunque existen heurísticas. [ nota 1 ]
compresión
Mediante cálculos adicionales, los compresores DEFLATE pueden generar archivos más pequeños.

Existe, por lo tanto, una compensación en el tamaño del archivo entre una alta profundidad de color, metadatos máximos (incluida la información del espacio de color, junto con información que no afecta la visualización), entrelazado y velocidad de compresión, que dan como resultado archivos grandes, con menor profundidad de color, menos o ningún fragmento auxiliar, sin entrelazado y filtrado y compresión optimizados 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 de manera similar, se prefiere una compresión rápida pero deficiente cuando se edita y guarda repetidamente un 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 la renderización inicial de archivos grandes (mejora la latencia), pero puede aumentar el tamaño del archivo (disminuye el rendimiento) con poca ganancia, particularmente para archivos pequeños. [ 59 ]

Compresión PNG con pérdida

Aunque PNG es un formato sin pérdidas, los codificadores PNG pueden preprocesar los datos de la imagen con pérdidas para mejorar la compresión PNG. Por ejemplo, cuantificar un PNG de color verdadero a 256 colores permite utilizar el tipo de color indexado para una probable reducción del tamaño del archivo. [ 94 ]

software de edición de imágenes

Algunos programas son más eficientes que otros al guardar archivos PNG; esto se debe a la implementación de la compresión PNG utilizada por el programa.

Muchos programas de diseño gráfico (como Vista Previa de Apple ) guardan archivos PNG con gran cantidad de metadatos y datos de corrección de color que, por lo general, son innecesarios para la visualización web . Los archivos PNG no optimizados de Adobe Fireworks también son conocidos por este problema, ya que incluyen opciones para editar la imagen en editores compatibles. Asimismo, CorelDRAW (al menos la versión 11) a veces genera archivos PNG que no pueden abrirse con Internet Explorer (versiones 6 a 8).

El rendimiento de Adobe Photoshop con archivos PNG ha mejorado en la suite CS al utilizar la función Guardar para web (que también permite el uso explícito de PNG/8).

Adobe Fireworks guarda archivos PNG de mayor tamaño que muchos otros programas por defecto. Esto se debe a la mecánica de su formato de guardado : las imágenes generadas por la función de guardado de Fireworks incluyen grandes fragmentos privados que contienen información completa de capas y vectores. Esto permite una edición sin pérdida de calidad. Al guardar con la opción Exportar , los PNG de Fireworks son comparables a los generados por otros editores de imágenes, pero ya no se pueden editar como nada más que mapas de bits planos. Fireworks no puede guardar PNG editables con vectores y optimizados para un tamaño determinado.

Otros ejemplos notables de compresores PNG deficientes incluyen:

  • Paint de Microsoft para Windows XP
  • Microsoft Picture It! Photo 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 en color verdadero se reduce a una paleta de 8 bits (como en GIF), los datos de imagen resultantes suelen ser mucho más pequeños. Por lo tanto, un PNG en color verdadero suele ser más grande que un GIF con color reducido, aunque PNG podría almacenar la versión con color reducido como un archivo con paleta de tamaño comparable. Por el contrario, algunas herramientas, al guardar imágenes como PNG, las guardan automáticamente en color verdadero, incluso si los datos originales solo usan color de 8 bits, lo que aumenta innecesariamente el tamaño del archivo. [ 59 ] Ambos factores pueden llevar a la idea errónea de que los archivos PNG son más grandes que los archivos GIF equivalentes.

Herramientas de optimización

Existen diversas herramientas para optimizar archivos PNG; lo hacen de la siguiente manera:

  • (opcionalmente) eliminar fragmentos auxiliares,
  • reduciendo la profundidad del color , ya sea:
    • utilice una paleta (en lugar de RGB) si la imagen tiene 256 colores o menos,
    • utilice 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
  • Optimización de la compresión DEFLATE.

Lista de herramientas

  • pngcrush es el optimizador de PNG más antiguo y popular. Permite realizar múltiples pruebas con diferentes filtros y parámetros de compresión, y finalmente elige el que ofrece el menor rendimiento. Este modelo de funcionamiento se utiliza en casi todos los optimizadores de PNG.
  • advpng y la utilidad similar advdef del paquete AdvanceCOMP recomprimen el IDAT PNG. Se aplican diferentes implementaciones de DEFLATE según el nivel de compresión seleccionado, buscando un equilibrio entre velocidad y tamaño de archivo: zlib en el nivel 1, libdeflate en el nivel 2, LZMA DEFLATE de 7-zip en el nivel 3 y zopfli en el nivel 4.
  • pngout se creó con el deflater propio del autor (similar a su utilidad zip, kzip), manteniendo todas las funciones de reducción/filtrado de color. Sin embargo, pngout no permite realizar varias pruebas de filtros en una sola ejecución. Se recomienda usar su versión comercial con interfaz gráfica, pngoutwin, o bien utilizar un wrapper para automatizar las pruebas o recomprimir usando su propio deflater, manteniendo el filtro línea por línea. [ nota 2 ]
  • zopflipng también se creó con su propio deflador, zopfli. Tiene todas las funciones de optimización de pngcrush (incluida la automatización de pruebas) a la vez que proporciona un deflador muy bueno, aunque lento.

A continuación se presenta una sencilla comparación de sus características.

Antes de zopflipngque estuviera disponible, una buena manera 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 ambas, 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 pngcrush , [ nota 2 ] actuando como un re-deflador, como advdef.

Eliminación de fragmentos auxiliares

Para eliminar fragmentos auxiliares, la mayoría de las herramientas de optimización de 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 suele resultar en tamaños de archivo mucho más pequeños. Por ejemplo, las siguientes opciones de línea de comandos logran esto con pngcrush:

pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB Archivodeentrada.pngArchivodesalida.png

Optimización de filtros

pngcrush, pngout, y zopflipngtodas ofrecen opciones que aplican uno de los tipos de filtro 0–4 globalmente (usando el mismo tipo de filtro para todas las líneas) o con un "pseudofiltro" (numerado 5), que para cada línea elige uno de los tipos de filtro 0–4 usando un algoritmo adaptativo. zopflipngofrece 3 métodos adaptativos diferentes, incluyendo una búsqueda por fuerza bruta que intenta optimizar el filtrado. [ nota 7 ]

pngouty zopflipngproporcionar una opción para preservar/reutilizar [ nota 2 ] [ nota 8 ] el conjunto de filtros línea por línea presente en la imagen de entrada.

pngcrushy zopflipngofrece opciones para probar diferentes estrategias de filtrado en una sola ejecución y elegir la mejor. La versión gratuita de línea de comandos pngoutno ofrece esto, pero la versión comercial pngoutwinsí. [ nota 9 ]

Optimización DEFLATE

Zopfli y el SDK de LZMA proporcionan implementaciones de DEFLATE que pueden generar índices de compresión superiores a los de la implementación de referencia de zlib , aunque a costa de un menor rendimiento. AdvanceCOMP advpngpuede advdefutilizar cualquiera de estas bibliotecas para recomprimir archivos PNG. Además, PNGOUT incluye su propia implementación propietaria de DEFLATE.

advpngNo tiene 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 cuando la imagen se beneficia significativamente del filtrado. Por el contrario, advdefdel mismo paquete no maneja la estructura PNG y actúa solo como un descompresor, 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, es capaz de realizar una optimización especial al guardar archivos ICO , reduciendo así su tamaño.

Los iconos de macOS también pueden contener subimágenes PNG, pero no existe ninguna herramienta disponible para ello.

Véase también

Notas explicativas

  1. El filtrado se utiliza para aumentar la similitud con los datos, incrementando 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 determinar qué conjunto de filtros es mejor que otro.
  2. 1 2 3 4 Se utilizapngout -f6para reutilizar el conjunto de filtros anterior
  3. Las herramientas que ofrecen dicha función podrían actuar como un simple descompresor de archivos PNG.
  4. zlib , la implementación de referencia de deflate, la compresión es subóptima incluso al nivel máximo. Ver Zopfli , formato zip en 7-zip y pngout .
  5. advpng no solo no admite la reducción de color, sino que también falla en imágenes con un espacio de color reducido.
  6. Advpng solo puede aplicar el filtro 0 globalmente, por lo tanto, no es ni sí ni no, sino N/A.
  7. [pngcrush|pngout] -f ozopflipng --filters
  8. zopflipng --filters=p
  9. El cuadro de diálogo de configuración de ↑pngoutwin para la optimización ofrece al usuario una selección de estrategias de filtrado.

Referencias

  1. 1 2 3 "ISO/IEC 15948:2004 – Tecnología de la información – Gráficos por computadora y procesamiento de imágenes – Gráficos de red portátiles (PNG): Especificación funcional" . Organización Internacional de Normalización . 3 de marzo de 2004. Recuperado el 19 de febrero de 2011 .
  2. "AVISO DE DERECHOS DE AUTOR, DESCARGO DE RESPONSABILIDAD y LICENCIA - Licencia de la Biblioteca de Referencia PNG versión 2" (TXT) . libpng.org . 1 de julio de 2000.
  3. 1 2 Roelofs, Greg (29 de mayo de 2010). "Historia de PNG" . libpng . Recuperado el 20 de octubre de 2010 .
  4. W3C 2003 , 1 Alcance .
  5. "Definición del sustantivo PNG del Oxford Advanced Learner's Dictionary" . Oxford Learner's Dictionaries . Consultado el 21 de enero de 2018 .
  6. "Descripción del archivo PNG de gráficos de red portátiles" . surferhelp.goldensoftware.com . Consultado el 12 de agosto de 2022 .
  7. T. Boutell; et al. (marzo de 1997). Especificación PNG (Portable Network Graphics) Versión 1.0 . Grupo de trabajo de redes. doi : 10.17487/RFC2083 . RFC 2083 . Informativo. sec. 3.
  8. "Registro del nuevo tipo de medio image/png" . IANA . 27 de julio de 1996.
  9. "Anuncio oficial [ sic ] de Compu$erve sobre la concesión de licencias GIF" . groups.google.com . Consultado el 8 de enero de 2025 .
  10. Limer, Eric (30 de octubre de 2019). "El GIF ha muerto. ¡Larga vida al GIF!" . Popular Mechanics . Recuperado el 21 de noviembre de 2022 .
  11. "Reflexiones sobre un formato de archivo que reemplace a los GIF" . groups.google.com . Consultado el 27 de febrero de 2026 .
  12. Roelofs 1999 , Capítulo 7. Historia del formato Portable Network Graphics. Error de sfn: no hay destino: CITEREFRoelofs1999 ( ayuda )
  13. 1 2 3 4 W3C 2003 , 11.2.2 IHDREncabezado de imagen
  14. Roelofs, Greg (29 de septiembre de 2011). "Especificación y extensiones de Portable Network Graphics (PNG)" . libpng . Consultado el 15 de agosto de 2021 .
  15. T. Boutell; et al. (marzo de 1997). Especificación PNG (Portable Network Graphics) Versión 1.0 . Grupo de trabajo de redes. doi : 10.17487/RFC2083 . RFC 2083 . Informativo. Sec. 8.4. PNG es estrictamente un formato de imagen única. (...) En el futuro, se podría definir un formato de imagen múltiple basado en PNG. Dicho formato se considerará un formato de archivo independiente.
  16. 1 2 "PNG Tercera Edición, Explicada" . W3C GitHub . 26 de febrero de 2025. Recuperado el 25 de junio de 2025 .
  17. "La especificación Portable Network Graphics (PNG) (tercera edición) ahora es una recomendación del W3C" . Consorcio World Wide Web. 24 de junio de 2025. Archivado del original el 25 de junio de 2025. Consultado el 25 de junio de 2025 .
  18. Chris Blume (24 de junio de 2025). "¡PNG ha vuelto!" . ProgramMax . Consultado el 25 de junio de 2025 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  19. T. Boutell; et al. (marzo de 1997). Especificación PNG (Portable Network Graphics) Versión 1.0 . Grupo de trabajo de redes. doi : 10.17487/RFC2083 . RFC 2083 . Informativo.
  20. W3C 2003 , 5.2 Firma PNG .
  21. W3C 2003 , 5.3 Diseño de bloques .
  22. 1 2 Laphroaig, Manul (31 de octubre de 2017). PoC or GTFO . No Starch Press. ISBN 9781593278984Cada fragmento consta de cuatro partes: longitud, tipo de fragmento, datos del fragmento y un CRC de 32 bits. La longitud es un entero sin signo de 32 bits que indica el tamaño únicamente del campo de datos del fragmento .
  23. Laphroaig, Manul (31 de octubre de 2017). PoC or GTFO . No Starch Press. ISBN 9781593278984. El tipo de fragmento es un código FourCC de 32 bits como IHDR, IDAT o IEND.
  24. W3C 2003 , 11.2.4 IDATDatos de imagen .
  25. W3C 2003 , 11.2.5 IENDTráiler de imagen .
  26. W3C 2003 , 11.3.3.3 iCCPPerfil ICC integrado .
  27. "Especificación PNG (Tercera edición), cICP: Puntos de código independientes de la codificación para la identificación del tipo de señal de vídeo" . w3.org . 21 de septiembre de 2023.
  28. "Añadir compatibilidad con imágenes HDR al formato PNG" . Grupo comunitario de la W3C sobre color en la web. 3 de mayo de 2023.
  29. Thomas Kopp (17 de abril de 2008). "Firmas digitales PNG: especificación de extensión" .
  30. "Especificación de gráficos de red portátiles (PNG) (Tercera edición)" .
  31. "Extensiones a la especificación PNG 1.2, versión 1.5.0" . ftp-osl.osuosl.org .
  32. W3C 2003 , 11.3.3.2 gAMAGamma de imagen .
  33. W3C 2003 , 11.3.5.3 pHYsDimensiones físicas de píxeles .
  34. W3C 2003 , 11.3.3.4 sBITBits significativos .
  35. "Especificación PNG (Portable Network Graphics) \ Versión 1.0" . w3.org . Consultado el 30 de mayo de 2022 .4.2.6. sBIT Bits significativos, 13 bytes en total - los tipos de color 2 y 3 suman 6 bytes
  36. Roelofs 2003 , Bits significativos (sBIT) : "Las imágenes en escala de grises son las más simples; sBIT contiene entonces un solo byte que indica el número de bits significativos en los datos de origen".
  37. "Especificación PNG: Especificaciones de fragmentos" .
  38. "Noticias PNG de 2006" . Libpng.org.
  39. 1 2 "Especificación PNG: Fundamento" . w3.org .
  40. W3C 2003 , 9 Filtrado .
  41. "Algoritmos de filtrado" . Especificación PNG .
  42. Paeth, Alan W. (1991). Arvo, James (ed.). "Compresión de archivos de imagen simplificada". Graphics Gems 2. Academic Press, San Diego: 93–100 . doi : 10.1016/B978-0-08-050754-5.50029-3 . ISBN 0-12-064480-0.Icono de acceso cerrado
  43. Crocker, Lee Daniel (julio de 1995). "PNG: El formato gráfico de red portátil" . Dr. Dobb's Journal . 20 (232): 36– 44.
  44. "Introducción a PNG" . nuwen.net . Consultado el 20 de octubre de 2010 .
  45. "¿Puedo usar... Tablas de soporte para HTML5, CSS3, etc." . caniuse.com . Consultado el 6 de febrero de 2021 .
  46. "iOS 8 y iPhone 6 para desarrolladores y diseñadores web: la próxima evolución para Safari y las aplicaciones web nativas" . mobilexweb.com. 17 de septiembre de 2014. Consultado el 24 de septiembre de 2014 .
  47. scroggo (14 de marzo de 2017). "chromium / chromium / src / 7d2b8c45afc9c0230410011293cc2e1dbb8943a7" . chromium.googlesource.com . Consultado el 31 de marzo de 2017 .
  48. chrome-cron; et al. (27 de marzo de 2017). "chromium / chromium / src / 59.0.3047.0..59.0.3053.0" . chromium.googlesource.com . Consultado el 31 de marzo de 2017 . 
  49. "Dev.Opera: Novedades en Chromium 59 y Opera 46" . dev.opera.com . Consultado el 11 de septiembre de 2022 .
  50. "Votación fallida: APNG 20070405a" . 20 de abril de 2007. Archivado del original el 3 de febrero de 2008.
  51. "Comparativa de propuestas de animación de PNG Group + software de prueba" . xs4all.nl . Archivado del original el 24 de enero de 2009.
  52. "Especificación PNG (Tercera edición), APNG: animación basada en fotogramas" . w3.org . 24 de junio de 2025.
  53. 1 2 3 P. Deutsch; JL. Gailly (mayo de 1996). Especificación del formato de datos comprimidos ZLIB versión 3.3 . Grupo de trabajo de redes. doi : 10.17487/RFC1950 . RFC 1950 .Informativo.
  54. P. Deutsch (mayo de 1996). Especificación del formato de datos comprimidos DEFLATE versión 1.3 . Grupo de trabajo de redes. doi : 10.17487/RFC1951 . RFC 1951 .Informativo.
  55. "Una introducción básica a las características de PNG" . Libpng.org . Consultado el 20 de octubre de 2010 .
  56. "GIF, PNG, JPG. ¿Cuál usar?" . Sitepoint.com. 3 de agosto de 2009. Consultado el 20 de octubre de 2010 .
  57. "Extensiones a la especificación PNG 1.2, versión 1.5.0" . Consultado el 5 de mayo de 2020 .
  58. "T.87 : Compresión sin pérdidas y casi sin pérdidas de imágenes fijas de tono continuo – Línea base" . Unión Internacional de Telecomunicaciones . Consultado el 20 de marzo de 2011 . 
  59. 1 2 3 4 5 6 7 Roelofs 2003 , Capítulo 9. Compresión y filtrado
  60. "Formato de archivo JPEG XL" . Biblioteca del Congreso . Consultado el 1 de enero de 2025 .
  61. "Por qué Apple usa JPEG XL y qué significa para tus fotos" . Petapixel . 18 de septiembre de 2024. Consultado el 1 de enero de 2025 .
  62. "Codificación de imágenes JPEG XL" . Biblioteca del Congreso . Consultado el 1 de enero de 2025 .
  63. "Cómo se compara JPEG XL con otros códecs de imagen" . Cloudinary . 26 de mayo de 2020. Consultado el 1 de enero de 2025 .
  64. "WebP" . www.loc.gov . 13 de abril de 2023. Consultado el 22 de agosto de 2024 .
  65. 1 2 Ellis, Matt (22 de febrero de 2021). "¿Qué es WebP? Ventajas y desventajas de este formato de imagen de próxima generación" . 99designs . Recuperado el 22 de agosto de 2024 .
  66. "Un formato de imagen para la web | WebP" . Google para desarrolladores . Consultado el 22 de agosto de 2024 .
  67. Wes Fenlon (28 de abril de 2023). "He aquí por qué tienes que lidiar con tantos webP molestos ahora" . PC Gamer . Consultado el 22 de agosto de 2024 .
  68. "AVIF: Conozca el formato de archivo de imagen de siguiente nivel" . Alliance for Open Media . 8 de noviembre de 2023. Consultado el 26 de septiembre de 2024 .
  69. "PNG vs AVIF: La batalla definitiva entre formatos de imagen | Coconut©" . www.coconut.co . Consultado el 26 de septiembre de 2024 .
  70. 1 2 "AVIF vs. WebP: 4 diferencias clave y cómo elegir" . Cloudinary . Consultado el 26 de septiembre de 2024 .
  71. "libpng" . Consultado el 13 de julio de 2013 .
  72. "Ayuda de Fireworks / Guardar y exportar" . Adobe Inc. Consultado el 16 de abril de 2026 .
  73. "Uso de imágenes PNG para mostrar datos" . Centro de Ciencias del Agua de Oregón. 16 de febrero de 2006. Archivado del original el 20 de agosto de 2008. Consultado el 21 de octubre de 2003 .
  74. "Por qué no hay archivos GIF en las páginas web de GNU" . Sistema Operativo GNU . 16 de diciembre de 2008.
  75. "Hoja informativa sobre PNG" . Consorcio World Wide Web . 7 de octubre de 1996.
  76. "Página de recursos para gif2png 2.5.11" . catb.org .
  77. "Quema todos los GIF" . burnallgifs.org .
  78. "Transparencia PNG en Internet Explorer" . PC Magazine . 5 de octubre de 2004.
  79. "Tendencias históricas anuales en las estadísticas de uso de formatos de archivo de imagen para sitios web" . w3techs.com .
  80. 1 2 3 4 "Navegadores con soporte para PNG" . 14 de marzo de 2009.
  81. "El Explorador de Windows se bloquea al hacer clic en un archivo PNG de fuegos artificiales para visualizarlo" . Adobe Systems . 5 de junio de 2007.
  82. "No se pueden ver imágenes .png con Internet Explorer 4.0" . Base de conocimientos de Microsoft .
  83. "Los archivos PNG que se encuentran dentro de una etiqueta de objeto se imprimen como una imagen negativa" . Base de conocimientos de Microsoft .
  84. "Las imágenes PNG se imprimen incorrectamente en Internet Explorer 5.01" . Base de conocimientos de Microsoft .
  85. "No puedes ver algunas imágenes PNG en Internet Explorer 6" . Base de conocimientos de Microsoft .
  86. "No se puede usar Internet Explorer 6 para abrir un archivo PNG que contenga uno o más fragmentos IDAT de longitud cero" . Base de conocimientos de Microsoft .
  87. "Preguntas frecuentes sobre PNG" .
  88. "PhD: Los gráficos de red portátiles pierden transparencia en el navegador web" . Base de conocimientos de Microsoft .
  89. "Los archivos PNG no muestran transparencia en Internet Explorer" . Base de conocimientos de Microsoft .
  90. Lovitt, Michael (21 de diciembre de 2002). "Opacidad variable entre navegadores con PNG: una solución real" . A List Apart . Archivado del original el 18 de agosto de 2011. Recuperado el 21 de julio de 2009 .
  91. "IE7 alpha transparent PNG + opacity" . Canal 9. Archivado del original el 27 de agosto de 2011. Recuperado el 23 de enero de 2009 .
  92. Fulbright, Michael (1999). "GNOME 1.0 Library Roadmap" . Archivado del original el 30 de enero de 2010. Recuperado el 19 de diciembre de 2007 .
  93. "Windows Vista – Iconos" . OOne . 2007. Archivado del original el 11 de noviembre de 2007. Consultado el 12 de noviembre de 2007 .
  94. "PNG puede ser un formato con pérdida" . Pngmini.com . Consultado el 1 de febrero de 2014 .

Lecturas adicionales

  • Roelofs, Greg (abril de 1997). "Linux Gazette: Historia del formato Portable Network Graphics (PNG)" . Linux Journal . 1997 (36es). Specialized Systems Consultants, Inc. ISSN 1075-3583 . 
  • Roelofs, Greg (2003). PNG: La guía definitiva (2.ª  ed.). O'Reilly Media. ISBN 1-56592-542-4.
  • Especificación de gráficos de red portátiles (PNG) (segunda  edición). W3C . 10 de noviembre de 2003.
  • Especificación PNG (Tercera edición)
  • Sitio web principal de PNG
  • Página principal de libpng
  • La historia de Papúa Nueva Guinea, por Greg Roelofs
  • Prueba imágenes PNG en línea
  • RFC 2083 
  • Más información sobre la corrección de color PNG
  • La biblioteca GD para generar archivos PNG dinámicos con PHP
  • Entrelazado PNG Adam7 Archivado el 31 de agosto de 2024 en Wayback Machine
  • Codificación de shells web en archivos PNG : Codificación de datos legibles por humanos dentro de un bloque IDAT.