Sunday, March 25, 2007

Sopa de letras

Mi primer curso de programación (del lenguaje FORTRAN), lo tomé, curiosamente, en la Facultad de Contaduría de la UNAM. No sé cómo o por qué fui a parar ahí. El chiste es que el profesor resultó ser un apasionado de las imágenes hechas por computadora. Particularmente en la impresión de las mismas, usando para ello todo género de trucos. En aquel entonces, las impresoras imprimían letras solamente, no pixeles. Por ello, imprimir una gráfica se hacía de muchas maneras. Una era sustituir los puntos por letras, y para algunas aplicaciones (por ejemplo, aquellas en donde se hacían gráficas cartesianas en dos dimensiones), más o menos funcionaba el truco.

Sin embargo, si se trataba de imprimir fotografías, la mejor opción que se encontró en el momento era pasar la imagen a tonos de gris (ni pensar en impresoras que sacaran resultados en color), de ahí, tomar pequeñas regiones de la imagen y así imprimir muchas letras (una encimando a la otra, para formar el tono de gris que se requería). Recuerdo que al final del curso el maestro nos regaló un poster impreso en muchas tiras de papel perforado, con la imagen de una mujer desnuda jugando con las olas en el mar.

Hoy día, cualquier impresora puede imprimir imágenes con la calidad deseada. Si se quiere, además, se pueden mandar a "plotter" por un costo relativamente bajo. La calidad final es extraordinaria. Sin embargo, la idea de imprimir imágenes como antaño, cuando las impresoras no hacían tantas cosas, me parecía un ejercicio interesante, y hace un buen tiempo de esto, lo programé en Delphi. Al programa en cuestión le puse primero "Ascii Art" para terminar llamándose "Sopa de Letras". Así entonces, Sopa de Letras es un programa para generar imágenes a partir de letras.

A quien le interese el software, escríbame a morsa@la-morsa.com y se lo mandaré de forma gratuita por correo electrónico.

He aquí el manual del programa:


Teoría de Operación
---------------------

Para crear este tipo de imgenes, lo que basicamente debe hacer el software es:

  • crear una rejilla (cuadrícula) sobre la imagen a procesar
  • tomar cada region de la rejilla y ver su tono de gris
  • sustituir el tono de gris por la letra ms adecuada
  • continuar as hasta terminar con a imagen

Si se están considerando imágenes en color, primero se saca el color promedio de la región y se pasa a gris.

El tamaño de la rejilla es importante. Si las regiones son muy grandes, las letras que sustituyan a las regiones de color no podrán mostrar una imagen muy bien definida. Si las regiones son muy pequeñas, la imagen con caracteres resultar mucho mejor definidas.


Ventajas de la Modernidad
---------------------------

Debido a que la vida moderna nos permite tener imágenes escaneadas fácilmente hoy día, al igual que modernos sistemas de programación, incluyendo el lenguaje de descripción HTML para páginas web, podemos hacer mejoras incluso sobre la idea original. Por ejemplo, en HTML están permitidas las letras de color. El enfoque de los creadores de HTML fue dotar a cada letra en la pantalla de un color determinado dentro de los 16 millones disponibles en la paleta RGB. Esto permite una inmensa gama de colores. Si se tiene una imagen de múltiples colores, ésta puede pasarse no sólo a tonos de gris, sino que a letras de colores sustituyendo la región. Los resultados finales de esta idea son verdaderamente agradables y sorprendentes.

Por ello, la salida (los resultados) de procesar una imagen, se presentan como una página HTML que puede verse con Firefox, Internet Explorer o Netscape Navigator.


Comandos del Programa
-------------------------

El software contiene los comandos básicos para procesar las imgenes:

Archivo/Leer imagen

Carga una imagen a la ventana. Se despliega en la forma de Sopa de Letras. Ésta puede verse deformada, pero eso no es de preocuparse. Se deforma simplemente para que quepa en el espacio asignado.

Archivo/Terminar

Finaliza la ejecución del programa


Procesa

De acuerdo a la opcin señalada, el programa procesará la imagen. Antes de procesarla, el sistema le pedirá el nombre del archivo en donde quedará el resultado. Se vale cualquier nombre (de acuerdo a las especificaciones de Windows). Agregue la extensión "HTML" porque el programa no la pone automticamente. Es claro que cualquier extensión se puede poner, pero usando HTML se garantiza que Windows ejecute el navegador de internet al hallar un archivo con ese apellido.

El procesamiento de las imágenes puede ser en una de las siguientes modalidades:

(a) Colores SIN letras

Aqu se calcula el color de la región y se imprime una 'M' sobre cada color para que se vean todos los tonos. El resultado es una página HTML (guárdese con extensión ".HTML" para ver la imagen en su navegador de Internet)

(b) Tonos de gris

Aqu se calcula el tono de gris de la región (si hay color se pasa primero a tono de gris) y se imprime una 'M' sobre cada tono hallado. El resultado es una página HTML (guárdese con extensión ".HTML" para ver la imagen en su navegador de Internet)

(c) Letras blanco y negro

Aqu se imprime sin la propiedad de las letras en HTML. Sirve particularmente cuando la impresora solamente puede imprimir letras blanco y negro. Usado normalmente en las viejas impresoras de matriz de puntos. El resultado es una pgina de texto (TXT) (guárdese con extensión ".txt" y use Word para ver la imagen).


(d) Colores + letras tonos de gris
Aquí cada caracter tendrá el color de la imagen y la letra correspondiente al tono de gris asociado. El resultado es una página HTML (guárdese con extensión ".HTML" para ver la imagen en su navegador de Internet)


(e) Tonos de gris + letras tonos de gris

Aquí cada caracter tendrá el tono de gris de la imagen y la letra correspondiente al tono de gris asociado. El resultado es una página HTML (guárdese con extensión ".HTML" para ver la imagen en su navegador de Internet)


(f) Colores con texto

Aquí cada caracter tiene el color de la imagen pero las letras impresas salen de una cadena de caracteres que el usuario alimenta (máximo 255 caracteres). El resultado es una página HTML (guárdese con extensión ".HTML" para ver la imagen en su navegador de Internet)


(g) Naipes

Aquí el programa sustituye cada región analizada por una carta de la baraja. Se necesita tener instalado el tipo de letra truetype en la máuina. Si ud. instaló el programa con el software de instalación entonces la instalación de fonts será automática. El resultado es una página de texto (TXT) (guárdese con extensión ".txt" y use Word para ver la imagen)


(e) Fichas de Dominó blancas (con puntos negros)

Aquí el programa sustituye cada región analizada por una ficha del dominó. Se necesita tener instalado el tipo de letra truetype en la máuina. Si ud. instaló el programa con el software de instalación entonces la instalación de fonts será automática. El resultado es una página de texto (TXT) (guárdese con extensión ".txt" y use Word para ver la imagen)



(e) Fichas de Dominó negras (con puntos blancos)

Aquí el programa sustituye cada región analizada por una ficha del dominó. Se necesita tener instalado el tipo de letra truetype en la máuina. Si ud. instaló el programa con el software de instalación entonces la instalación de fonts será automática. El resultado es una página de texto (TXT) (guárdese con extensión ".txt" y use Word para ver la imagen)



Otras Opciones
----------------

  • Se puede apagar/prender (normalmente aparece apagado), si se quiere ver cómo el software va procesando la imagen. Esto aparece en la opción 'Seguir proceso'.
  • Se puede cambiar el tamaño de la letra para la salida en HTML. Los tamaños van de 1 a 9.
  • Se puede cambiar el tamaño de X y Y en la región a procesar.


Notas importantes
-------------------

Las opciones que usan tipos de letra como cartas, o fichas de dominó, tienen que procesarse con Word. Así, se procesa la imagen y el archivo se carga a Word directamente como un archivo de texto. Una vez cargado, sustituya las letras que se ven en el texto por el tipo de letra (font) que desea, puede ser el de cartas, dominó de fichas blancas con puntos negros y el de fichas negras con puntos blancos. Al sustituir Word el tipo de letra, ver su imagen.

Cabe destacar que si su imagen es muy ancha, probablemente no quepa la imagen en Word (que es en realidad un texto). Intente cambiar el formato a landscape o reduzca el tamaño de la letra si es que aún as no puede ver la imagen. Recuerde que Word cuando no le cabe, pasa la línea abajo. Para Word su imagen no es más que un texto. No lo olvide.

2 comments:

Hatterg said...

Saludos, me parece genial su software (la idea en si, el programa no lo he probado) tengo una duda, ¿podría hacerse con el texto en colores? o ¿hay algún otro método para hacerlo de modo que el texto salga a color? le dejo aqui un sitio web donde encontré una imagen que puede servir de muestra

http://pkt.jandar.net/

Gracias de antemano por su respuesta

Morsa said...

Sí, hatterg, mi programa también hace imágenes con letras de colores como en el sitio que mencionas. Cabe señalar que esto se puede porque el HTML permite poner cualquier color (de los más de 16 millones de colores), en las letras.