GatoPaint.red

codificador / decodificador de imágenes en texto · formato .miau
63
colores
8
operadores
compresión
cargar imagen
proporción
pegar código gatopaint
o escribe manualmente
imagen resultante · en vivo
escribe dimensiones y código arriba para ver la imagen
configurar lienzo
12×
referencia completa de caracteres

cada carácter representa un color. el 0 siempre es transparencia. la paleta está distribuida en 26 minúsculas + 26 mayúsculas + 10 números + @ = 63 colores + transparente.

operadores de compresión

GatoPaint convierte imágenes en cadenas de texto comprimidas que cualquier programa puede leer, guardar o transmitir sin necesidad de binarios, formatos propietarios ni librerías de imagen.

🎮

videojuegos indie & pixel art

guarda sprites, mapas o tilesets directamente en archivos de texto o código fuente. cero dependencias de imagen. un sprite de 16×16 cabe en una sola línea.

📡

transmisión ligera de datos

envía imágenes pequeñas por protocolos que solo admiten texto: IRC, SMS, señales MQTT, chats básicos. compresión sin pérdida en iconos, avatares y miniaturas.

🤖

arte generativo & bots

genera imágenes con código o IA en formato texto, luego renderízalas. perfecto para bots de twitter/mastodon que crean pixel art algorítmico.

📱

apps sin servidor de imágenes

almacena avatares o iconos de usuario en una base de datos SQL normal como strings. no necesitas CDN ni bucket de almacenamiento para assets pequeños.

🔐

esteganografía artística

oculta mensajes dentro de imágenes reales: el código parece texto normal hasta que se decodifica. útil para watermarks visuales o ARGs.

📖

documentación legible

incluye diagramas visuales directamente en README, wikis o comentarios de código. cualquiera con el decodificador puede ver la imagen sin salir del editor.

1. cuantización de color

una imagen tiene millones de colores posibles. GatoPaint los reduce a 63 colores predefinidos + transparencia, usando distancia euclidiana en espacio RGB para elegir el más cercano a cada píxel. la paleta está diseñada para cubrir el espectro completo con representación uniforme. el carácter 0 siempre es transparencia (alpha = 0).

2. run-length encoding por caracteres

el método básico de compresión: en lugar de escribir aaaaa, se escribe a+. los operadores son multiplicadores: /=×2, *=×3, -=×4, +=×5. se pueden combinar: a/* = a repetida 2×3=6 veces. a++ = a×5×5 = 25 veces. esto es especialmente efectivo en imágenes con fondos sólidos o zonas de color uniforme.

3. saltos de línea y repetición de líneas

# es un salto de línea virtual — repite el último carácter hasta el final de fila, útil cuando una línea entera es de un color. _ repite la línea anterior completa, ideal para imágenes con filas idénticas (patrones, degradados, zonas planas). combinando # y _, bloques grandes de transparencia como 0#___ se reducen a 4 caracteres en lugar de cientos.

4. mirroring con |

el símbolo | indica simetría especular: todo lo que está antes del | se espeja y se añade al final. sdkjh| se convierte en sdkjhhjkds. perfecto para sprites simétricos (caras, escudos, iconos centrados) donde codificar solo la mitad izquierda ahorra hasta un 50% de caracteres.

5. grupos y anidación con paréntesis

cualquier secuencia entre paréntesis se trata como una unidad y puede recibir un operador de repetición. (ab)* = ababab. los grupos se anidan: ((ab)*c)+ = repite ab 3 veces, añade c, y repite todo ese bloque 5 veces. esto captura patrones geométricos repetitivos en muy pocos caracteres, eficaz en texturas, patrones de tiled o bordes decorativos.

6. lectura en orden raster

la codificación recorre la imagen de izquierda a derecha, arriba a abajo, igual que se lee texto. cada carácter del código corresponde a un píxel (o más si hay operadores). el decodificador simplemente lee el string de izquierda a derecha, expandiendo operadores, y va colocando colores en el canvas en el mismo orden. para decodificar solo hacen falta las dimensiones de la imagen y el string.

estructura del archivo .miau
// gatopaint v1 // dim: 50x50 // chars: 1847 sdkjh|ab(op)*0#___...

los archivos .miau son texto plano con una cabecera mínima de comentarios. cualquier editor de texto puede abrirlos. son versionables con git, diff-eables, y comprimibles adicionalmente con gzip para máxima eficiencia.