PNG glitch files

PNG es un tipo de formato de imagen creado a partir de 1995 basado en un algoritmo de compresión sin pérdida desarrollado en buena parte para solventar las deficiencias del formato Gif y que permite almacenar imágenes con muy baja compresión y con la posibilidad de mantener un canal alfa transparente. Si embargo es conocida la dificultad existente para realizar glitches en este formato con los métodos tradicionales como editores de texto, hexadecimales, Audacity, etc. Y generalmente conseguiremos unos resultados muy pobres y con prácticamente nulas variaciones.
¿Porqué ocurre esto con este formato en particular? El formato PNG tiene en su sístema de algoritmo CRC32 un elemento que hace que sea casi imposible realizar nuestro Glitch en unas condiciones normales y éste elemento es el “checksum”; éste es usado para confirmar imágenes corruptas y cuando detecta una corrupción en los datos hace que ningún visualizados sea capaz de abrir el archivo. Por ello se debe recalcular el checksum una vez realizado el glitch y volver a colocarlo para poder abrirlo en cualquier aplicación de imágenes.

En esta imagen se ve de manera simplificada cómo trabaja el encoding de los archivos PNG
IMG_1649

En este artículo The Art of PNG Glitch explica esto de una manera más completa y exaustiva:
http://ucnv.github.io/pnglitch/

Podemos hacer Glitch en cada uno de los cuatro estados de la compresión, pero en realidad sólo son eficientes los glitches aplicados a Filtered Data y Compressed Data. En cuanto a los filtros, éstos son una forma de transformar los datos de imagen de modo que se comprima mejor; ”incluye 5 modos de predicción del valor del píxel, que resulta muy útil para mejorar la compresión, donde se elige para cada línea de la imagen (scanline) un método de filtrado que predice el color de cada píxel basándose en los colores de los píxeles previos y resta al color del píxel actual, el color pronosticado. Los cinco métodos son: None, Sub, Up, Average y Paeth.” (Wiki). Al hacer el glitch en el Filtered Data lo que podemos hacer es usar un sólo filtro para todas las scanlines, y veremos cómo cambia el resultado según usemos uno u otro filtro.

Otra característica de los archivos PNG que influyen en el tipo de glitch que obtendremos es su capacidad de tener canal alfa y de ser entrelazado. Respecto a lo primero PNG tiene una gran cantidad de opciones de transparencia y si lo comparamos con un archivo GIF, que sólo puede ser totalmente opaco o totalmente transparente, PNG permite utilizar mayor profundidad de bits y ofrecer un mayor rango de semi transparencias (28 = 256 grados diferentes de transparencia, como si se tratara de un color). En los archivos entrelazados usan el Adam 7 algoritmo de 8×8 píxeles, lo cual se aprecia cuando hacemos Glitch en archivos de este tipo. Aquí vemos los resultados hechos en una imagen PNG con un programa hexadecimal, Hex Fiend, en archivos con canal alfa y entrelazados.

IMG_1215_alfa_Hex1bit
IMG_1215_alfa_Hex1bit

IMG_1215_alfa_2_interlaced_Hex1bit
IMG_1215_alfa_2_inter_Hex1bit

IMG_1215_interlaced_Hex1bit
IMG_1215_interHex1bit_2

Ahora que sabemos cómo funcionan los archivos PNG vayamos a la parte práctica de cómo hacer que nuestro Glitch funcione en estos archivos. El autor del artículo anterior ha hecho PNGlitch, una Ruby Library para ello.

https://github.com/ucnv/pnglitch/
Aquí se puede descargar están las instrucciones de cómo instalarla y cómo usar básicamente la librería, aunque en el artículo The Art of PNG Glitch hay muchos ejemplos de códigos e incluso una lista de variaciones glitch que incluye 120 combinaciones de uso entre el método de destrucción de bytes y el filtro utilizado.

Otra opción, que es la que yo he usado, es utilizar Processing para realizar nuestro glitch. Gracias a tsulej que ha creado un script llamado pnglitch podemos hacer el proceso de una manera relativamente sencilla. Como vemos en la captura, en el inicio del sketch están las instrucciones para poder usar el script con nuestro teclado del ordenador. Básicamente también utiliza el sistema de filtros (Sub,Up, Average, Paeth y None) aunque cambia el “glitch method”, que puede ser zero, add1, negate, sub1 y random; con la tecla “O” podemos cambial el filtro en modo false/true.

pnglitch processing

Hay que tener en cuenta que en cualquier procedimiento que usemos diferentes niveles de compresión pueden darnos diferentes resultados. (Si utilizas IrfanView puedes usar el plugin de exportación PNGOUT Plugin que permite una mayor variación en las opciones de exportación).

A continuación muestro una serie de resultados hechos con el script de Processing y cómo los he hecho siguiendo las indicaciones dadas.

IMG_1215sub1_filter true
IMG_1215sub1_filter true

IMG_1215_Random_filter false
IMG_1215_Random_filter false

IMG_1215_alfa_add_filter false
IMG_1215_alfa_add_filter false

IMG_1215zero_ filter up
IMG_1215zero_ filter up

IMG_1215random_filter average
IMG_1215random_filter average

IMG_1215_sub1_filter paeth
IMG_1215_alfa_filter paeth

IMG_1215_interlaced_add_filter false
IMG_1215_inter_add_filter false

IMG_1215_interlaced_random_filter average
IMG_1215_inter_random_filter average

IMG_1215_interlaced_sub1_paeth
IMG_1215_inter_sub1_paeth

IMG_1215_alfa_interlaced_negate_filter false
IMG_1215_alfa_inter_negate_filter false

IMG_1215_alfa_interlaced_random_filter false
IMG_1215_alfa_inter_random_filter false

Por último otro tutorial hecho por let’s glitch it! se puede encontrar aquí http://letsglitchit.glitchartistscollective.com/post/112944606226/png-glitch-tutorial-prep-work-acquire-an-8-bit. En este caso se trata de reemplazar una cadena de string con un editor hexadecimal.

Para especificaciones sobre PNG ver:
https://en.wikipedia.org/wiki/Portable_Network_Graphics
http://www.libpng.org/pub/png/

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s