Esta maravilla de Omar Shehata titulada Unraveling the JPEG es un despiece absolutamente fascinante byte a byte de un fichero que contiene una fotografía JPEG con uno de los temas favoritos de Internet: un gato.
Lo que ha hecho Shehata es montar el archivo sobre un editor de ficheros (normalmente es hexadecimal, aunque aquí ha usado decimal) cuyo contenido se refleja instantáneamente en la imagen de la derecha, el gato «comprimido». Y a la inversa, haciendo un clic en la foto el panel se resaltan los bytes correspondientes. De este modo se puede ir jugando a modificar cada uno de los bytes a ver qué sucede, una de las formas más didácticas posibles.
Para que el asunto no se descontrole a lo largo del artículo se explica a qué corresponden las diferentes capas de la compresión JPEG, a saber: submuestreo de crominancia, cuantificación y la codificación. El archivo pesa unos 78 KB y toqueteando acá y allá se pueden ver cómo algunos cambios corrompen el archivo, dejándolo inútil, otros varían la forma de la imagen o la mezclan y otros modifican los detalles o colores.
Una gran idea cuyo código está al completo en Github: Unraveling the JPEG y Zenodo. Altamente educativo.
El gato es de Mikhail Vasilyev (Unsplash).
Relacionado: