Proceso técnico de decodificación de archivos PNG

Fuentes: Technical process of PNG file decoding

La decodificación de un archivo PNG sigue un proceso estructurado que comienza con el análisis de sus 'chunks', bloques de datos organizados por metadatos y comprimirse. Cada chunk incluye una cabecera de longitud, un nombre, los datos en sí y un código de verificación CRC. La capitalización del nombre del chunk determina su criticidad: los chunks en mayúsculas son críticos para la visualización, mientras que los en minúsculas son auxiliares. El chunk IDAT es el único que contiene los datos de imagen comprimidos, los cuales se concatenan para formar el flujo de datos final.

Una vez extraídos, estos datos se descomprimen utilizando el algoritmo zlib, un método estándar de compresión que no depende de características específicas de la imagen. El resultado inicial suele parecer ruido aleatorio debido a la alta entropía de los datos comprimidos, pero contiene información útil como los filtros de línea. Para recuperar la imagen legible, el decodificador aplica un proceso de 'defiltrado' (desfiltrado) en cada línea, revertiendo las transformaciones aplicadas durante la compresión. Además, el formato soporta la intercalación (interlacing), un método opcional que divide la imagen en siete subimágenes (según el algoritmo Adam7) para mejorar la carga progresiva en pantallas de bajo rendimiento. Este artículo detalla cada paso técnico, desde la estructura de chunks hasta la manipulación de errores comunes en los filtros de línea.