El programa que utilicé fue Metapixel,
un sencillo programa de consola que hace lo que se le pide. Su uso constá de 2
fases, una primera en la que "preparamos" las fotos que vayan a usarse (sólo
habría que hacerlo una vez) y la segunda en la que se genera el mosaico a partir
de las fotos. Pero, hay algunas peculiaridades con las que nos podemos
encontrar, os cuento. Una vez instalado el programa, lo primero que tenemos que
hacer es copiar todas nuestras fotos a un directorio "temporal" para poder
generar las librerías. Sería interesante que el metapixel pudiese
navegar por la estructura de directorios, pero todas las fotos tienen que estar
en un mismo directorio. Una forma de hacerlo es utilizando el comando
find.
find ~/MisFtos/ -size +20k -a \( -iname "*jpg" -o -iname "*jpeg" -o -iname "*png" \) -exec cp {} tempfotos/ \;
De esa forma copiamos todos los ficheros con extensión jpeg, jpg o png que
tengan más de 20KB (para eliminar los thumbnails que generan muchos
visualizadores gráficos). Una vez que los tenemos todos, utilizamos un script
incluido con metapixel que necesita 2 parámetros: el directorio donde están las
imágenes de la biblioteca y un directorio (que debe existir) en el que creará la
biblioteca. Una vez que tengamos la biblioteca podremos eliminar el directorio
temporal que creamos antes y recuperar el espacio de disco. En mis pruebas, cree
distintas bibliotecas con distintos tamaños de imagenes para poder jugar con
esas opciones. El comando a utilizar es metapixel-prepare --width=32
--height=32 tempfotos tabla32, que creará las tablas necesarias en
el directorio tabla32. Podemos repetir la operación cambiando los
parámetros a 64 (no olvideis crear un nuevo directorio, por ejemplo
tabla64) y así tendremos distintos juegos de imágenes. El proceso de
preparar las imágenes consume algo de tiempo, pero sólo tendremos que hacerlo
una vez. En mi caso particular, en un Athlon 750MHz llevó casi 18 minutos
para procesar algo más de 2100 fotos.
Después se trata de crear el mosaico jugando con los parámetros. Como es un
proceso que no lleva demasiado tiempo, es recomendable hacer distintas pruebas y
quedarnos con la que más nos convenza.
Parámetros con los que podemos jugar son -d, que le dicen el espacio mínimo
(en imágenes) que debe haber entre 2 apariciones de la misma imágen y -a que
recibe un parámetro que significa el porcentaje de "trampa" que puede usar
(haciendo que se pisen las imágenes). Aparte, también está la opción -c que hará
que en lugar de un mosaico el resultado sea un collage. De esa forma
las imágenes no estarán situadas en una matriz, sino que algunas se solaparán
entre ellas. Como crear cada imagen lleva menos de medio minuto, podemos hacer
distintas pruebas, incluso podriamos crear un script que crease una bateria de
mosaicos y automatizarlo, de forma que después tan sólo tengamos que escoger
nuestra favorita. Algunos ejemplos de órdenes son:
metapixel --metapixel ~/MisFotos/Personales/favorita.jpg mosaico.png <tabla32/tables.mxt
metapixel --metapixel -d5 ~/MisFotos/Personales/favorita.jpg mosaico-d5.png <tabla32/tables.mxt
metapixel --metapixel -d5 ~/MisFotos/Personales/favorita.jpg mosaico-d5-64.png <tabla64/tables.mxt
metapixel --metapixel -c -d2 ~/MisFotos/Personales/favorita.jpg collage.png <tabla32/tables.mxt
Desgraciadamente, las pruebas que yo he hecho no me han dejado nada
satisfecho, pero posiblemente sea porque necesito tener más fotos y más variedad
en las fotos (casi todas son negras porque son de noche). En los ejemplos del
programa se han usado más de 20000 fotos, con lo que las pruebas son
muy distintas a las mias.
Otro programa que conozco (escrito en Java y más visual) es JImage Mosaic, pero no
he llegado a probarlo porque supongo que las limitaciones serán las mismas y que
necesitarás tener una buena selección de fotos, con gran cantidad y variedad.
Y ya sólo queda desearos suerte con vuestros mosaicos :-)