Articulo de referencia

PNG

Portable Network Graphics ( PNG , pronunciado oficialmente / p ɪ ŋ / [2] [3] PING , pronunciado coloquialmente / ˌ p iː ɛ n ˈ dʒ iː / [4] PEE -en- JEE ) es un formato de archivo...

Portable Network Graphics ( PNG , pronunciado oficialmente / p ɪ ŋ / [2] [3] PING , pronunciado coloquialmente / ˌ p ɛ n ˈ / [4] PEE -en- JEE ) es un formato de archivo de gráficos rasterizados que admite la compresión de datos sin pérdida . [5] PNG se desarrolló como un reemplazo mejorado y no patentado para el formato de intercambio de gráficos (GIF); extraoficialmente, las iniciales PNG representaban el acrónimo recursivo "PNG's not GIF" (PNG no es GIF). [6]

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 un canal alfa para transparencia) e imágenes RGB o RGBA a todo color que no se basan en paletas. El grupo de trabajo PNG diseñó el formato para transferir imágenes en Internet , no para gráficos de impresión 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 , que codifican 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 RFC 2083 informativo en marzo de 1997 y como estándar ISO/IEC 15948 en 2004. [1]

Historia y desarrollo

La motivación para crear el formato PNG fue la constatación, el 28 de diciembre de 1994, de que el algoritmo de compresión de datos Lempel–Ziv–Welch (LZW) utilizado en el formato Graphics Interchange Format (GIF) había sido patentado por Unisys . La patente exigía que todo el software compatible con GIF pagara regalías, lo que provocó una oleada de críticas por parte de los usuarios de Usenet . Uno de ellos fue Thomas Boutell, que 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 de ese hilo plantearon muchas propuestas que más tarde formarían parte del formato de archivo final. Oliver Fromme, autor del popular visor JPEG QPEG, propuso el nombre PING, que finalmente se convirtió en PNG, un acrónimo recursivo que significa que PING no es GIF , [9] y también la extensión .png . Otras sugerencias que se implementaron posteriormente incluyeron el algoritmo de compresión deflate y la compatibilidad con colores de 24 bits ; la falta de este último en GIF también motivó al equipo a crear su formato de archivo. El grupo se conocería como PNG Development Group y, como el debate se expandió rápidamente, más tarde utilizó una lista de correo asociada con un foro de CompuServe . [2] [10]

La especificación completa de PNG fue publicada bajo la aprobación del 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 versión 1.1, que abordaba problemas técnicos para la corrección de gamma y 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 1.2 fue publicada como una segunda edición del estándar W3C el 10 de noviembre de 2003, [11] y como Estándar Internacional (ISO/IEC 15948:2004) el 3 de marzo de 2004. [12] [1]

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

Grupo de trabajo de Papúa Nueva Guinea

La especificación PNG original fue creada 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 la RFC 2083 son: [14]

  • Editor: 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

La imagen PNGVisto con una aplicación de edición hexadecimal para Ubuntu

Encabezado de archivo

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

"Trozos" dentro del archivo

Después del encabezado, viene una serie de fragmentos , [16] 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 encuentre un fragmento auxiliar que no comprenda puede ignorarlo con seguridad. 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 mientras se mantiene la compatibilidad con versiones anteriores: proporciona compatibilidad hacia adelante , y esta misma estructura de archivo (con firma y fragmentos diferentes) se usa en los formatos asociados MNG , JNG y APNG .

Un fragmento consta de cuatro partes: longitud (4 bytes, [17] big-endian ), tipo/nombre del fragmento (4 bytes [18] ), datos del fragmento (bytes de longitud) y CRC (código de redundancia cíclica/suma de comprobación; 4 bytes [17] ). 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 nombre/tipo 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 las distintas letras del nombre (bit 5 del valor numérico del carácter) es un campo de bits que proporciona al decodificador cierta 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 interrumpir 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 de propósito especial) 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 puedan entrar en conflicto entre sí (aunque dos nombres de fragmentos privados podrían entrar en conflicto).

La tercera letra debe estar en mayúscula para cumplir con la especificación PNG. Está reservada para futuras ampliaciones. Los decodificadores deben tratar un fragmento con una tercera letra en minúscula de la misma manera que cualquier otro fragmento no reconocido.

El uso de mayúsculas y minúsculas en la cuarta letra indica si es seguro copiar el fragmento por parte de editores que no lo reconocen. Si está en minúsculas, el fragmento se puede copiar de forma segura independientemente del alcance de las modificaciones realizadas al archivo. Si está en mayúsculas, solo se puede copiar 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; contiene (en este orden) la imagen
    • ancho (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 filtro (1 byte, valor 0)
    • método entrelazado (1 byte, valores 0 "sin entrelazado" o 1 " entrelazado Adam7 ") (13 bytes de datos en total). [11]

Como se indica en el Consorcio World Wide Web , la profundidad de bits se define como "la cantidad de bits por muestra o por índice de paleta (no por píxel)". [11]

  • PLTEcontiene la paleta : una lista de colores.
  • 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 en modo de transmisión. El fragmento IDAT contiene los datos de la imagen real, que es el flujo de salida del algoritmo de compresión. [19]
  • IENDmarca el final de la imagen; el campo de datos del fragmento IEND tiene 0 bytes/está vacío. [20]

El PLTEfragmento 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).

Trozos 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 . [21]

  • bKGDProporciona el color de fondo predeterminado. Está pensado para usarse cuando no hay una mejor opción disponible, como en los visores de imágenes independientes (pero no en los navegadores web; consulte a continuación para obtener más detalles).
  • cHRMproporciona las coordenadas de cromaticidad de los colores primarios y del punto blanco de la pantalla .
  • cICPespecifica el espacio de color, la función de transferencia y los coeficientes de matriz según se define en ITU-T H.273 . [22] Está destinado a usarse con imágenes HDR sin necesidad de un perfil de color. [23]
  • dSIGSirve para almacenar firmas digitales. [24]
  • eXIfalmacena metadatos Exif . [25]
  • 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 en un entero (29412) para su almacenamiento. [26]
  • 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 extensible (XMP) utiliza este fragmento con una palabra clave 'XML:com.adobe.xmp'
  • pHYscontiene el tamaño de píxel deseado (o relación de aspecto de 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. [27]
  • sBIT(bits significativos) indica la precisión del color de los datos de origen; este fragmento contiene un total de entre 1 y 5 bytes, dependiendo del tipo de color. [28] [29] [30]
  • sPLTsugiere una paleta para utilizar si la gama completa de colores no está disponible.
  • 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 representación" (se definen 4 valores: 0, 1, 2 y 3 para la intención de representación). [31]
  • sTERfragmento indicador de imagen estereoscópica para imágenes estereoscópicas . [32]
  • tEXtPuede almacenar texto que se pueda representar en ISO/IEC 8859-1 , con un par clave-valor para cada fragmento. La "clave" debe tener entre uno y 79 caracteres de longitud. El separador es un carácter nulo. El "valor" puede tener cualquier longitud, incluido cero hasta el tamaño máximo permitido del fragmento menos la longitud de la palabra clave y el separador. Ni "clave" ni "valor" pueden contener caracteres nulos. Los espacios iniciales o finales tampoco están permitidos.
  • tIMEalmacena la hora en que se modificó la imagen por última vez.
  • tRNSContiene información sobre la transparencia. En el caso de las imágenes indexadas, almacena valores de canal alfa para una o más entradas de paleta. En el caso de las imágenes en color verdadero y en escala de grises, almacena un único valor de píxel que se considerará totalmente transparente.
  • zTXtcontiene texto comprimido (y un marcador de método de compresión) con los mismos límites que tEXt.

La primera letra minúscula de estos fragmentos indica que no son necesarios para la especificación PNG. La última letra minúscula de algunos fragmentos indica que es seguro copiarlos, incluso si la aplicación en cuestión no los entiende.

Formato de píxel

Los píxeles en 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 de un solo píxel consisten en 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 en la imagen se codifica con un formato idéntico.

Los formatos permitidos codifican cada número como un valor entero sin signo utilizando una cantidad fija de bits, denominada en la especificación PNG profundidad de bits . Tenga en cuenta que esto no es lo mismo que profundidad de color , que se utiliza 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.

La cantidad 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, llamadas tipo de color .

Una demostración de la profundidad de color en un archivo PNG, en bits por canal. Izquierda: 8 bits; derecha: 16 bits. Observe los artefactos ; contraste ajustado para mayor claridad.

El tipo de color se especifica como un valor de 8 bits, pero solo se utilizan los tres bits más bajos y, aun así, solo se permiten las cinco combinaciones mencionadas 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:

  • Valor de bit 1: los datos de la imagen almacenan los índices de la 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 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.

En el caso de las imágenes en 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 corta que la paleta, se supone 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 utiliza 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 los archivos 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. Todos los demás utilizan una profundidad de bits por canal de 8 o 16. Las combinaciones que esto permite se indican 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 producir un pequeño subconjunto de ellos.

Transparencia de la imagen

PNG ofrece una variedad de opciones de transparencia. En el caso de imágenes en escala de grises y en color verdadero, se puede declarar un único valor de píxel como transparente o se puede agregar un canal alfa (lo que permite utilizar cualquier porcentaje de transparencia parcial). En el caso de imágenes con paleta, se pueden agregar valores alfa a las entradas de la paleta. La cantidad de dichos valores almacenados puede ser menor que la cantidad total de entradas de la paleta, en cuyo caso las entradas restantes se consideran completamente opacas.

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

El almacenamiento alfa puede ser "asociado" (" premultiplicado ") o "no asociado", pero PNG estandarizó [33] 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 operación de sobrecodificació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 implica una combinación de codificación LZ77 y Huffman . Hay implementaciones de DEFLATE con licencia permisiva , como zlib , ampliamente disponibles.

En comparación con formatos con compresión con pérdida como JPEG, elegir una configuración de compresión superior al promedio retrasa el procesamiento, pero a menudo no da como resultado un tamaño de archivo significativamente menor.

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 PNG con 256 colores, que ocupa tan solo 251 bytes con el prefiltro. La misma imagen en formato GIF sería más de trece veces más grande.

Antes de aplicar DEFLATE, los datos se transforman a través de 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 eficientemente comprimibles. [34] El tipo de filtro utilizado para una línea de escaneo se antepone a la línea de escaneo para permitir la descompresión en línea.

En la especificación PNG actual solo hay un método de filtro (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 imagen sin procesar, especialmente si es similar a la línea anterior, ya que las diferencias con la predicción generalmente se agruparán alrededor de 0, en lugar de distribuirse entre 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.

Existen cinco tipos de filtros 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 de la izquierda ( A ), el píxel de arriba ( B ) y el píxel de arriba y de 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 píxeles pueden ser uno o dos bytes, o varios valores por byte, pero nunca cruzan los límites de bytes. Los tipos de filtros son: [35]

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

La compresión se mejora aún más al elegir los tipos de filtro de forma adaptativa línea por línea. Esta mejora, y un método heurístico para implementarla que se utiliza habitualmente en 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; [37] la elección del filtro es un componente de la optimización del tamaño del archivo, como se analiza a continuación.

Si se utiliza 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 entrelazado sobre una imagen de 16×16

PNG ofrece un esquema de entrelazado opcional de 7 pasos y 2 dimensiones : el algoritmo Adam7 . Este 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, en particular si se utilizan algoritmos de interpolación como la interpolación bicúbica . [38]

Sin embargo, el esquema de siete pasos 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 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 vuelve automáticamente 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 admitirlo.

La complejidad de MNG llevó a la propuesta de APNG por parte de los desarrolladores de la Fundación Mozilla. Se basa en PNG, admite animación y es más simple que MNG. APNG ofrece una alternativa a 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 navegadores web principales. [39] APNG es compatible con Firefox 3.0 y posteriores, Pale Moon (todas las versiones) y Safari 8.0 y posteriores. [40] Chromium 59.0 agregó compatibilidad con APNG, [41] [42] seguido por Google Chrome. Opera admitió APNG en las versiones 10-12.1, pero el soporte caducó en la versión 15 cuando cambió al motor de renderizado Blink ; el soporte se volvió a agregar en Opera 46 (heredado de Chromium 59). [43] Microsoft Edge ha admitido APNG desde la versión 79.0, cuando cambió a un motor basado en Chromium.

En abril de 2007, el Grupo PNG decidió no adoptar el APNG. [44] Se estaban debatiendo varias alternativas, entre ellas ANG, aNIM/mPNG, “PNG en GIF” y su subconjunto “RGBA en GIF”. [45] Sin embargo, actualmente sólo el APNG cuenta con un amplio apoyo.

Con el desarrollo de la Tercera Edición de la Especificación PNG, ahora mantenida por el grupo de trabajo PNG, [46] APNG finalmente se incorporará a la especificación como una extensión. [47]

Ejemplos

Se muestra al estilo de los editores hexadecimales , con los valores de bytes en formato hexadecimal en el lado izquierdo y sus caracteres equivalentes de ISO-8859-1 en el lado derecho con los caracteres no reconocidos y de control 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 para humanos (en este ejemplo, PNG, IHDR, IDAT e IEND).

Ventajas

Razones para utilizar esta Norma Internacional:

  • Portabilidad : La transmisión es independiente de la plataforma de software y hardware.
  • Completitud : es posible representar imágenes en color verdadero, color indexado y 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 es utilizado para la generación y visualización de imágenes en el momento a través de la comunicación serial.
  • Presentación progresiva : poder transmitir flujos de datos que inicialmente son una aproximación de toda la imagen y progresivamente van mejorando 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.
  • Sin pérdida : Sin pérdida: 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 manera eficiente y consistente.
  • Facilidad : la implementación del estándar es fácil.
  • Intercambiabilidad : cualquier decodificador PNG que siga los estándares puede leer todos los flujos de datos PNG.
  • Flexibilidad : permite futuras ampliaciones y añadidos privados 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, el formato GIF puede lograr una mayor compresión que el PNG (consulte la sección sobre tamaño de archivo, 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 .
  • Mientras que GIF está limitado a un 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, desvanecimientos más suaves, etc. [50] 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 animación solo a través de extensiones no oficiales (consulte la sección sobre animación, más arriba).

Los navegadores más antiguos no admiten tanto las imágenes PNG. En particular, IE6 tiene una compatibilidad limitada con PNG. [51]

JPEG

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

El formato JPEG (Joint Photographic Experts Group) puede producir un archivo más pequeño que el 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 suelen estar dominados por transiciones suaves y de bajo contraste 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 en el tamaño del archivo con una ganancia insignificante en la calidad. 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 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 los ajustes utilizados en la compresión JPG; pueden ser bastante notables cuando se utiliza un ajuste 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 de pérdida de generación , donde la decodificación y recodificación repetida de una imagen para guardarla nuevamente causa una pérdida de información cada vez, degradando la imagen. Debido a que PNG no tiene pérdida, es adecuado para almacenar imágenes para editarlas. 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 tienen un amplio soporte 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 hay pérdida de generación.

Si bien la especificación PNG no incluye explícitamente un estándar para incorporar datos de imágenes Exif de fuentes como cámaras digitales, el método preferido para incorporar datos EXIF ​​en un PNG es utilizar la etiqueta de fragmento auxiliar no crítica eXIf. [52]

Los primeros navegadores web no admitían imágenes PNG; JPEG y GIF eran los principales formatos de imagen. JPEG se utilizaba habitualmente al exportar imágenes que contenían 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 al mismo tiempo 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 mejoraba la compatibilidad de los navegadores web con el formato. No se necesitan imágenes en absoluto para mostrar degradados en los navegadores modernos, ya que los degradados se pueden crear mediante CSS .

JPEG-LS

JPEG-LS es un formato de imagen del Joint Photographic Experts Group , aunque mucho menos conocido y respaldado 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. [53] En Waterloo Repertoire ColorSet, un conjunto estándar de imágenes de prueba (sin relación con el conjunto de pruebas de conformidad JPEG-LS), JPEG-LS generalmente funciona mejor que PNG, en un 10-15%, pero en algunas imágenes PNG funciona sustancialmente mejor, en el orden del 50-75%. [54] Por lo tanto, si ambos formatos son opciones y el tamaño del archivo es un criterio importante, ambos deben considerarse, dependiendo de la imagen.

PELEA

El formato de archivo de imagen de etiqueta (TIFF) es un formato que incorpora una gama extremadamente amplia 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 agregarle compatibilidad a las aplicaciones sea una tarea mucho más difícil y, por lo tanto, tiene poca compatibilidad 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 brindan 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érdida de propósito general más común que se usa con TIFF es Lempel–Ziv–Welch (LZW). Esta técnica de compresión, que también se usa en GIF, estuvo cubierta por patentes hasta 2003. TIFF también admite el algoritmo de compresión que usa PNG (es decir, Compression Tag 0008 16 ' Adobe -style') con un uso medio y el respaldo de las 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 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 [33] mientras que TIFF también admite alfa "asociado" (premultiplicado).

WebP

WebP es un formato inventado por Google que pretendía sustituir a PNG, JPEG y GIF. [55] Los archivos WebP permiten la compresión con y sin pérdida, mientras que PNG solo permite la compresión sin pérdida. WebP también admite animación, algo que antes solo podían lograr los archivos GIF . [56]

Sin embargo, las principales mejoras de WebP con respecto a PNG son la gran reducción del tamaño de archivo y, por lo tanto, tiempos de carga más rápidos cuando se integran en sitios web. Google afirma que las imágenes WebP sin pérdida son un 26 % más pequeñas que los archivos PNG. [57]

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. [58] WebP tampoco es compatible con todos los navegadores web, lo que puede requerir que los proveedores de alojamiento de imágenes web creen una imagen de respaldo para mostrar al usuario, anulando los posibles ahorros de almacenamiento de WebP. [59]

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 . [60]

AVIF es generalmente más pequeño en tamaño que WebP y PNG. [61] AVIF admite animación mientras que PNG no y tiene una calidad de imagen superior en comparación con PNG. [62]

Sin embargo, al igual que WebP, AVIF es compatible con menos navegadores y aplicaciones que PNG. [63] En concreto, AVIF es compatible con los navegadores más utilizados, Microsoft Edge , Firefox y Google Chrome , [64] [65] pero requiere una descarga adicional para su uso con Microsoft Windows . [60]

Soporte de software

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

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

El formato PNG es ampliamente compatible con programas de gráficos, incluidos Adobe Photoshop , Photo-Paint y Paint Shop Pro de Corel , GIMP , GraphicConverter , Helicon Filter , ImageMagick , Inkscape , IrfanView , el editor de imágenes Pixel, Paint.NET y Xara Photo & Graphic Designer y muchos otros (incluidas plataformas de diseño gráfico en línea como Canva ). Algunos programas incluidos en los sistemas operativos populares que admiten PNG incluyen Paint de Microsoft y Photos / iPhoto y Preview de Apple , y GIMP también suele incluirse en distribuciones de Linux populares .

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

Compatibilidad del navegador web con PNG

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

A pesar de los llamados de la Free Software Foundation [68] y el Consorcio World Wide Web (W3C), [69] herramientas como gif2png, [70] y campañas como Burn All GIFs, [71] la adopción de PNG en sitios web fue bastante lenta debido al soporte tardío y lleno de errores en Internet Explorer, particularmente en lo que respecta a la transparencia. [72]

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

En particular, las versiones de Internet Explorer (Windows) anteriores a la 9.0 (lanzada en 2011) tenían numerosos problemas que impedían representar correctamente las imágenes PNG. [73]

  • La versión 4.0 se bloquea en fragmentos grandes de PNG. [74]
  • 4.0 no incluye la funcionalidad para ver archivos .png, [75] pero hay una corrección en el registro. [73]
  • Las versiones 5.0 y 5.01 tienen soporte para OBJECT interrumpido. [76]
  • 5.01 imprime imágenes de paleta con fondos negros (o gris oscuro) en Windows 98, a veces con colores radicalmente alterados. [77]
  • 6.0 no puede mostrar imágenes PNG de 4097 o 4098 bytes de tamaño. [78]
  • 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 Microsoft Knowledge Base: 947864 MS08-024: Actualización de seguridad acumulativa para Internet Explorer. [79]
  • La versión 6.0 a veces pierde por completo la capacidad de mostrar archivos PNG, pero hay varias soluciones. [80]
  • Las versiones 6.0 y anteriores tienen compatibilidad con transparencia de canal alfa rota (mostrarán el color de fondo predeterminado en su lugar). [81] [82] [83]
  • Las versiones 7.0 y anteriores no pueden combinar la transparencia alfa de 8 bits Y la opacidad del elemento ( CSS – filtro: Alpha (opacidad=xx)) sin rellenar secciones parcialmente transparentes con negro. [84]
  • Las versiones 8.0 y anteriores tienen un soporte gamma inconsistente o roto. [73]
  • Las versiones 8.0 y anteriores no tienen soporte para corrección de color. [73]

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 . [85] En 2006, Microsoft Windows introdujo el soporte para iconos PNG en Windows Vista . [86] Los iconos PNG también son compatibles con AmigaOS 4 , AROS , macOS , iOS y MorphOS . Además, Android hace un uso extensivo de los PNG.

Software de optimización y tamaño de archivos

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

Comparado con GIF

En comparación con los archivos GIF , un archivo PNG con la misma información (256 colores, sin fragmentos auxiliares/metadatos), comprimido por un compresor eficaz, normalmente es 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 [54] 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 la imagen bidimensional 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 distribuirse entre todos los valores posibles y, por lo tanto, se comprimirán más fácilmente con DEFLATE. Sin embargo, algunas versiones de Adobe Photoshop , CorelDRAW y MS Paint proporcionan una compresión PNG deficiente, lo que crea la impresión de que GIF es más eficiente. [54]

Factores de tamaño de archivo

Los archivos PNG varían de tamaño debido a varios factores:

Profundidad de 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 no es necesario para visualizar, como en los sitios web.
entrelazado
Como cada paso del algoritmo Adam7 se filtra por separado, esto puede aumentar el tamaño del archivo. [54]
filtrar
Como etapa de precompresión, cada línea se filtra con un filtro predictivo, que puede cambiar de una línea a otra. Como el paso final DEFLATE opera sobre los datos filtrados de toda la imagen, no se puede optimizar fila por fila; la elección del filtro para cada fila es, por lo tanto, potencialmente muy variable, aunque existen heurísticas. [nota 1]
compresión
Con cálculos adicionales, los compresores DEFLATE pueden producir archivos más pequeños.

Por lo tanto, existe un equilibrio entre el tamaño de archivo, 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 dan como resultado archivos grandes, con una profundidad de color menor, menos fragmentos auxiliares o ninguno, sin entrelazado y un filtrado y compresión ajustados pero que requieren un uso intensivo de recursos computacionales. Para diferentes propósitos, se eligen diferentes equilibrios: un archivo máximo puede ser mejor para archivar y editar, mientras que un archivo reducido 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 un archivo repetidamente, mientras que se prefiere una compresión lenta pero alta cuando un archivo es estable: al archivar o publicar. El entrelazado es un equilibrio: acelera drásticamente la representación temprana 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. [54]

Compresión PNG con pérdida

Aunque PNG es un formato sin pérdida, los codificadores PNG pueden preprocesar datos de imagen de manera que no presenten 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 posible reducción del tamaño del archivo. [87]

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 los archivos PNG con grandes cantidades de metadatos y datos de corrección de color que, por lo general, 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 a 8).

El rendimiento de Adobe Photoshop en archivos PNG ha mejorado en CS Suite cuando se utiliza 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 debe a la mecánica de su formato de guardado : las imágenes producidas por la función de guardado de Fireworks incluyen fragmentos grandes y privados que contienen información completa de capas y vectores. Esto permite una 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 PNG editables con tamaño optimizado para vectores.

Otros ejemplos notables de compresores PNG deficientes incluyen:

  • Paint de Microsoft para Windows XP
  • Microsoft Picture It! Foto Premium 9

Una mala compresión 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 imagen resultantes suelen ser mucho más pequeños. Por lo tanto, un PNG de color verdadero suele ser más grande que un GIF de color reducido, aunque PNG podría almacenar la versión de color reducido como un archivo paletizado 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 utilizan solo color de 8 bits, lo que infla el archivo innecesariamente. [54] 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

Hay varias herramientas disponibles para optimizar archivos PNG; esto se hace 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
  • Optimizando la compresión DEFLATE.

Lista de herramientas

  • pngcrush es el optimizador de PNG más antiguo de los populares. Permite realizar múltiples pruebas de selección de filtros y 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.
  • advpng y la utilidad similar advdef del paquete AdvanceCOMP vuelven a comprimir el IDAT del PNG. Se aplican diferentes implementaciones de DEFLATE según el nivel de compresión seleccionado, equilibrando 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 deflactor propio del autor (igual que la utilidad zip del autor, kzip), manteniendo todas las funciones de filtrado y reducción de color. Sin embargo, pngout no permite usar varias pruebas de filtros en una sola ejecución. Se recomienda usar su versión comercial con interfaz gráfica de usuario, pngoutwin, o usarla con un contenedor para automatizar las pruebas o volver a comprimir usando su propio deflactor mientras se mantiene el filtro línea por línea. [nota 2]
  • zopflipng también se creó con su propio deflactor, zopfli. Tiene todas las funciones de optimización de pngcrush (incluida la automatización de pruebas) y, al mismo tiempo, ofrece un deflactor muy bueno, pero lento.

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

Antes de que zopflipng estuviera disponible, una buena manera práctica de realizar una optimización de png era usar una combinación de 2 herramientas en secuencia para una compresión óptima: una que optimiza los filtros (y elimina 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 pngcrush , [nota 2] actuando como un re-deflactor, como advdef.

Eliminación de trozos auxiliares

Para eliminar fragmentos secundarios, 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 suele dar como resultado 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 InputFile.png OutputFile.png

Optimización de filtros

pngcrush, pngout y zopflipng ofrecen opciones que aplican uno de los tipos de filtro 0 a 4 de manera global (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 a 4 usando 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 preservar/reutilizar [nota 2] [nota 8] el conjunto de filtros línea por línea presente en la imagen de entrada.

pngcrush y zopflipng ofrecen opciones para probar distintas 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í lo hace. [nota 9]

Optimización DEFLATE

Zopfli y el SDK LZMA proporcionan implementaciones de DEFLATE que pueden producir índices de compresión más altos que la implementación de referencia zlib a costa del rendimiento. AdvanceCOMP advpngpuede advdefutilizar cualquiera de estas bibliotecas para volver a comprimir archivos PNG. Además, PNGOUT contiene su propia implementación patentada de DEFLATE.

advpngno 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 se debe usar cuando la imagen se beneficia significativamente del filtrado. Por el contrario, advdefdel mismo paquete no se ocupa de la estructura PNG y actúa solo como un re-deflactor, conservando cualquier configuración de filtro existente.

Optimización de iconos

Dado que los iconos diseñados para 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 una optimización especial al guardar archivos ICO , reduciendo así su tamaño. FileOptimizer (mencionado anteriormente) también puede manejar archivos ICO.

Los íconos para macOS también pueden contener subimágenes PNG, pero no existe una herramienta de este tipo disponible. [ cita requerida ]

Véase también

Notas explicativas

  1. ^ El filtrado se utiliza para aumentar la similitud de los datos y, por lo tanto, aumentar la tasa de compresión. Sin embargo, en teoría no existe una fórmula para la similitud ni una relación absoluta entre la similitud y el compresor, por lo que, a menos que se realice la compresión, no se puede determinar si un conjunto de filtros es mejor que otro.
  2. ^ abcd Use pngout -f6 para reutilizar el conjunto de filtros anterior
  3. ^ Las herramientas que ofrecen dicha función podrían actuar como un puro redeflactor de archivos PNG.
  4. ^ zlib , la implementación de deflate de referencia, la compresión es subóptima incluso en el 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 sí ni no, sino N/D.
  7. ^ [pngcrush|pngout] -f O zopflipng --filtros
  8. ^ zopflipng --filtros=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 filtro.

Referencias

  1. ^ abc «ISO/IEC 15948:2004 – Tecnología de la información – Procesamiento de imágenes y gráficos por ordenador – Gráficos de red portátiles (PNG): Especificación funcional». Organización Internacional de Normalización . 3 de marzo de 2004. Consultado el 19 de febrero de 2011 .
  2. ^ ab Roelofs, Greg (29 de mayo de 2010). "Historia de Papúa Nueva Guinea". libpng . Consultado el 20 de octubre de 2010 .
  3. ^ W3C 2003, 1 Ámbito.
  4. ^ "Definición del sustantivo PNG del Oxford Advanced Learner's Dictionary". Oxford Learner's Dictionaries . Consultado el 21 de enero de 2018 .
  5. ^ "Descripción del archivo Portable Network Graphic .PNG". surferhelp.goldensoftware.com . Consultado el 12 de agosto de 2022 .
  6. ^ Roelofs, Greg. "Revisión web: ¡Los PNG NO son GIF!". people.apache.org . Consultado el 24 de noviembre de 2021 .
  7. ^ T. Boutell; et al. (marzo de 1997). Especificación PNG (Gráficos de red portátiles) versión 1.0. IESG . sec. 3. doi : 10.17487/RFC2083 . RFC 2083.
  8. ^ "Registro de nuevo tipo de medio image/png". IANA . 27 de julio de 1996.
  9. ^ Limer, Eric (30 de octubre de 2019). «El GIF ha muerto. Larga vida al GIF» . Popular Mechanics . Consultado el 21 de noviembre de 2022 .
  10. ^ Roelofs 1999, Capítulo 7. Historia del formato de gráficos de red portátil.Error de sfn: no hay destino: CITEREFRoelofs1999 ( ayuda )
  11. ^ abcd W3C 2003, 11.2.2 Encabezado de imagen IHDR
  12. ^ Roelofs, Greg (29 de septiembre de 2011). "Especificación y extensiones de gráficos de red portátiles (PNG)". libpng . Consultado el 15 de agosto de 2021 .
  13. ^ Boutell, T. (1 de octubre de 1996). PNG (Portable Network Graphics) Specification 1.0. W3C . sec. 8.4. doi : 10.17487/RFC2083 . RFC 2083. PNG en sí mismo es estrictamente un formato de una sola imagen. (...) En el futuro, se podrá definir un formato de múltiples imágenes basado en PNG. Dicho formato se considerará un formato de archivo independiente.
  14. ^ Boutell, Thomas (1 de octubre de 1996). PNG (Portable Network Graphics) Specification 1.0. doi : 10.17487/RFC2083 . RFC 2083.
  15. ^ W3C 2003, 5.2 Firma PNG.
  16. ^ W3C 2003, 5.3 Diseño de fragmentos.
  17. ^ ab Laphroaig, Manul (31 de octubre de 2017). PoC o GTFO. Sin Starch Press. ISBN 9781593278984Cada fragmento consta de cuatro partes: longitud, un tipo de fragmento, los datos del fragmento y un CRC de 32 bits. La longitud es un entero sin signo de 32 bits que indica únicamente el tamaño del campo de datos del fragmento.
  18. ^ Laphroaig, Manul (31 de octubre de 2017). PoC o GTFO. Sin Starch Press. ISBN 9781593278984El tipo de fragmento es un código FourCC de 32 bits, como IHDR, IDAT o IEND.
  19. ^ W3C 2003, 11.2.4 Datos de imagen IDAT.
  20. ^ W3C 2003, 11.2.5 Tráiler de imagen IEND.
  21. ^ W3C 2003, 11.3.3.3 iCCP Perfil ICC integrado.
  22. ^ "Especificación PNG (tercera edición), puntos de código independientes de la codificación cICP para la identificación del tipo de señal de vídeo". w3.org . 21 de septiembre de 2023.
  23. ^ "Añadir compatibilidad con imágenes HDR al formato PNG". Grupo comunitario Color on the Web del W3C. 3 de mayo de 2023.
  24. ^ Thomas Kopp (17 de abril de 2008). "Firmas digitales PNG: especificación de extensión".
  25. ^ "Extensiones a la especificación PNG 1.2, versión 1.5.0". ftp-osl.osuosl.org .
  26. ^ W3C 2003, 11.3.3.2 gAMA Gamma de imagen.
  27. ^ W3C 2003, 11.3.5.3 pHYs Dimensiones físicas de píxeles.
  28. ^ W3C 2003, 11.3.3.4 sBIT Bits significativos.
  29. ^ "Especificación PNG (Gráficos de red portátiles) \ 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 totalizaron 6 bytes
  30. ^ Roelofs 2003, Significant Bits (sBIT) "Las imágenes en escala de grises son las más simples; sBIT contiene un solo byte que indica la cantidad de bits significativos en los datos de origen"
  31. ^ "Especificación PNG: Especificaciones de fragmentos".
  32. ^ "Noticias PNG de 2006". Libpng.org.
  33. ^ ab "Especificación PNG: fundamento". w3.org .
  34. ^ W3C 2003, 9 Filtrado.
  35. ^ "Algoritmos de filtrado". Especificación PNG .
  36. ^ 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
  37. ^ Crocker, Lee Daniel (julio de 1995). “PNG: el formato gráfico portátil de red”. Revista del Dr. Dobb . 20 (232): 36–44.
  38. ^ "Introducción a PNG". nuwen.net . Consultado el 20 de octubre de 2010 .
  39. ^ "¿Puedo usar... Tablas de soporte para HTML5, CSS3, etc." caniuse.com . Consultado el 6 de febrero de 2021 .
  40. ^ "iOS 8 y iPhone 6 para diseñadores y desarrolladores web: la próxima evolución de Safari y las aplicaciones web nativas". mobilexweb.com. 17 de septiembre de 2014. Consultado el 24 de septiembre de 2014 .
  41. ^ scroggo (14 de marzo de 2017). «chromium/chromium/src/7d2b8c45afc9c0230410011293cc2e1dbb8943a7». chromium.googlesource.com . Consultado el 31 de marzo de 2017 .
  42. ^ 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 .
  43. ^ "Dev.Opera — Novedades en Chromium 59 y Opera 46". dev.opera.com . Consultado el 11 de septiembre de 2022 .
  44. ^ "Votación fallida: APNG 20070405a". 20 de abril de 2007. Archivado desde el original el 3 de febrero de 2008.
  45. ^ "Comparación de propuestas de animación del grupo PNG + software de prueba". xs4all.nl . Archivado desde el original el 24 de enero de 2009.
  46. ^ "Explicación de la tercera edición del formato PNG". GitHub del W3C . 24 de mayo de 2023.
  47. ^ "Especificación PNG (tercera edición), APNG: animación basada en cuadros". w3.org . 21 de septiembre de 2023.
  48. ^ abc Deutsch, L. Peter; Gailly, Jean-Loup (mayo de 1996). "rfc1950". Ietf Datatracker . Consultado el 18 de agosto de 2021 .
  49. ^ Deutsch, L. Peter (mayo de 1996). "rfc1951". Ietf Datatracker . Consultado el 18 de agosto de 2021 .
  50. ^ "Introducción básica a las características de PNG". Libpng.org . Consultado el 20 de octubre de 2010 .
  51. ^ "GIF, PNG, JPG. ¿Cuál utilizar?". Sitepoint.com. 3 de agosto de 2009. Consultado el 20 de octubre de 2010 .
  52. ^ "Extensiones de la especificación PNG 1.2, versión 1.5.0" . Consultado el 5 de mayo de 2020 .
  53. ^ "T.87: Compresión sin pérdida y casi sin pérdida de imágenes fijas de tono continuo – Línea base". Unión Internacional de Telecomunicaciones . Consultado el 20 de marzo de 2011 .
  54. ^ abcdefg Roelofs 2003, Capítulo 9. Compresión y filtrado
  55. ^ "WebP". www.loc.gov . 13 de abril de 2023 . Consultado el 22 de agosto de 2024 .
  56. ^ Ellis, Matt (22 de febrero de 2021). "¿Qué es WebP? Pros y contras de este formato de imagen de última generación". 99designs . Consultado el 22 de agosto de 2024 .
  57. ^ "Un formato de imagen para la Web | WebP". Google para desarrolladores . Consultado el 22 de agosto de 2024 .
  58. ^ Wes Fenlon (28 de abril de 2023). "Aquí tienes la razón por la que ahora tienes que lidiar con tantos sitios web molestos". PC Gamer . Consultado el 22 de agosto de 2024 .
  59. ^ Ellis, Matt (22 de febrero de 2021). "¿Qué es WebP? Pros y contras de este formato de imagen de última generación". 99designs . Consultado el 22 de agosto de 2024 .
  60. ^ ab "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 .
  61. ^ "PNG vs AVIF: La batalla definitiva entre formatos de imagen | Coconut©". www.coconut.co . Consultado el 26 de septiembre de 2024 .
  62. ^ "AVIF vs. WebP: 4 diferencias clave y cómo elegir". Cloudinary . Consultado el 26 de septiembre de 2024 .
  63. ^ "AVIF vs. WebP: 4 diferencias clave y cómo elegir". Cloudinary . Consultado el 26 de septiembre de 2024 .
  64. ^ "Transparencia alfa PNG | ¿Puedo usar... Tablas de soporte para HTML5, CSS3, etc." caniuse.com . Consultado el 26 de septiembre de 2024 .
  65. ^ "Formato de imagen AVIF | ¿Puedo utilizar... Tablas de soporte para HTML5, CSS3, etc." caniuse.com . Consultado el 26 de septiembre de 2024 .
  66. ^ "libpng" . Consultado el 13 de julio de 2013 .
  67. ^ "Uso de imágenes PNG para visualizar datos". Centro de Ciencias del Agua de Oregón. 16 de febrero de 2006.
  68. ^ "Por qué no hay archivos GIF en las páginas web de GNU". Sistema operativo GNU . 16 de diciembre de 2008.
  69. ^ "Ficha técnica de PNG". Consorcio World Wide Web . 7 de octubre de 1996.
  70. ^ "Página de recursos para gif2png 2.5.11". catb.org .
  71. ^ "Grabar todos los GIF". burnallgifs.org .
  72. ^ "Transparencia PNG en Internet Explorer". Revista PC . 5 de octubre de 2004.
  73. ^ abcd "Navegadores compatibles con PNG". 14 de marzo de 2009.
  74. ^ "El Explorador de Windows se bloquea cuando hago clic en un archivo PNG de Fireworks para verlo". Adobe Systems . 5 de junio de 2007.
  75. ^ "No se pueden ver imágenes .png con Internet Explorer 4.0". Base de conocimiento de Microsoft .
  76. ^ "Los archivos PNG que se encuentran dentro de una etiqueta de objeto se imprimen como una imagen negativa". Microsoft Knowledge Base .
  77. ^ "Las imágenes PNG se imprimen incorrectamente en Internet Explorer 5.01". Microsoft Knowledge Base .
  78. ^ "No se pueden ver algunas imágenes PNG en Internet Explorer 6". Base de conocimiento de Microsoft .
  79. ^ "No se puede utilizar Internet Explorer 6 para abrir un archivo PNG que contenga uno o más fragmentos IDAT de longitud cero". Microsoft Knowledge Base .
  80. ^ "Preguntas frecuentes sobre PNG".
  81. ^ "PhD: Los gráficos de red portátiles pierden transparencia en el navegador web". Microsoft Knowledge Base .
  82. ^ "Los archivos PNG no muestran transparencia en Internet Explorer". Base de conocimiento de Microsoft .
  83. ^ Lovitt, Michael (21 de diciembre de 2002). "Opacidad variable entre navegadores con PNG: una solución real". A List Apart . Archivado desde el original el 18 de agosto de 2011. Consultado el 21 de julio de 2009 .
  84. ^ "IE7 alpha transparent PNG + opacity". Canal 9. Archivado desde el original el 27 de agosto de 2011. Consultado el 23 de enero de 2009 .
  85. ^ Fulbright, Michael (1999). «GNOME 1.0 Library Roadmap». Archivado desde el original el 30 de enero de 2010. Consultado el 19 de diciembre de 2007 .
  86. ^ "Windows Vista – Iconos". OOne . 2007. Archivado desde el original el 11 de noviembre de 2007 . Consultado el 12 de noviembre de 2007 .
  87. ^ "PNG puede ser un formato con pérdida de información". Pngmini.com . Consultado el 1 de febrero de 2014 .

Lectura adicional

  • Roelofs, Greg (abril de 1997). "Linux Gazette: Historia del formato Portable Network Graphics (PNG)". Linux Journal . 1997 (36es). Consultantes de sistemas especializados, Inc. ISSN  1075-3583.
  • Roelofs, Greg (2003). Papúa Nueva Guinea: La guía definitiva (2.ª edición). 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
  • Sitio de inicio de PNG
  • Página de inicio de libpng
  • La historia de Papúa Nueva Guinea por Greg Roelofs
  • Pruebe 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
  • PNG entrelazado Adam7
  • Codificación de Web Shells en archivos PNG: codificación de datos legibles por humanos dentro de un bloque IDAT.
Obtenido de "https://es.wikipedia.org/w/index.php?title=PNG&oldid=1248754420"