Formato PNG: compresión sin pérdida y fondo transparente
Formato PNG: origen (patente de GIF), de la Recomendación W3C de 1996 a la 3.ª edición de 2025 (HDR, APNG, EXIF), compresión sin pérdida, chunks y transparencia.
PNG (Portable Network Graphics) es un formato creado a mediados de los años 90 para evitar los problemas de patente de la compresión LZW que usaba GIF y, a la vez, ofrecer mejores funciones que GIF. Se convirtió en Recomendación del W3C en 1996 y después se normalizó también como ISO/IEC 15948. En junio de 2025 se publicó como Recomendación del W3C la 3.ª edición de PNG, la primera revisión en 22 años desde la 2.ª edición (2003), que incorporó oficialmente al estándar el PNG animado (APNG), la información de color HDR y el chunk EXIF.
Principio de compresión
PNG es un formato sin pérdida que no altera en absoluto los valores de los píxeles. Aplica un filtro a cada fila para convertir los valores en otros fáciles de predecir, como la «diferencia con el píxel de la izquierda o de arriba», y luego los comprime con el algoritmo Deflate, de la misma familia que zip. Cuando un mismo color se repite en zonas amplias, las diferencias se convierten en series de ceros y se comprimen muchísimo; una foto, en la que cada píxel varía un poco, apenas se comprime.
Si reduces la imagen a 256 colores o menos y la guardas en modo paleta (color indexado), el tamaño baja mucho, pero ese paso es en sí una pérdida porque reduce colores: aunque el resultado sea PNG, será distinto del original.
Firma del archivo y estructura de chunks
Un archivo PNG siempre empieza con una firma de 8 bytes (en hexadecimal 89 50 4E 47 0D 0A 1A 0A). Después se suceden unidades llamadas chunks, cada una formada por longitud, tipo (4 caracteres), datos y un valor de comprobación CRC.
| Chunk | Función |
|---|---|
| IHDR | Ancho, alto, profundidad de bits y tipo de color |
| PLTE | Paleta (en color indexado) |
| tRNS | Transparencia de imágenes con paleta o de un solo color |
| IDAT | Datos de píxeles comprimidos (pueden repartirse en varios) |
| eXIf | Metadatos EXIF (incluido oficialmente en la 3.ª edición) |
| cICP | Espacio de color, p. ej. HDR (añadido en la 3.ª edición) |
| acTL · fcTL · fdAT | Control y fotogramas de animación APNG (incluidos oficialmente en la 3.ª edición) |
| IEND | Fin del archivo |
Está diseñado para ignorar los chunks auxiliares desconocidos, así que los programas antiguos pueden abrir el archivo aunque se añadan funciones nuevas. Gracias a este diseño, los visores sin soporte de APNG muestran solo el primer fotograma.
Transparencia
PNG puede tener por píxel un canal alfa de 0 a 255 niveles (de 0 a 65,535 en 16 bits), lo que permite representar con naturalidad sombras semitransparentes e incluso bordes de cabello. Por eso es el formato estándar para guardar imágenes sin fondo, logotipos e iconos.
Ventajas y limitaciones
- Ideal para texto, líneas y gráficos: los bordes se mantienen nítidos y a menudo pesa menos que un JPG.
- Sin pérdida al volver a guardar: adecuado para archivos intermedios de edición.
- Poco eficiente para fotos: la misma foto ocupa varias veces más que en JPG.
- Soporte de APNG: según Can I use, desde Chrome 59, Firefox 3 y Safari 8; los programas sin soporte muestran solo el primer fotograma.
Usos principales
Capturas de pantalla, logotipos e iconos, imágenes con fondo transparente, diagramas y gráficos, originales para editar. También se usa cuando una imprenta exige archivos sin pérdida.
Al convertir a otros formatos
- PNG → JPG: las zonas transparentes deben rellenarse con un color de fondo. Al pasar capturas a JPG el texto puede emborronarse, así que usa una calidad alta (PNG a JPG).
- PNG → WebP: con WebP sin pérdida a menudo se reduce el tamaño manteniendo la transparencia. Google afirma que el WebP sin pérdida es de media un 26% más pequeño que PNG.
- PNG → ICO: si necesitas un favicon o un icono de Windows, convierte PNG a ICO. Conviene partir de un original cuadrado.
- PNG de 16 bits: el Canvas del navegador trabaja con 8 bits por canal, así que un original de 16 bits convertido con una herramienta web queda en 8 bits.