2006

El anterior post me dio una idea de poner todas mis fotos formando un mosaico, pero algo más original. Así que ni corto ni perezoso cogí el programa banner de UNIX y generé el patrón de puntos de "2006". No sé si habéis usado ese programa. A mí me gusta mucho. Se le puede seleccionar el ancho de la bandera. En mi caso, quería que hubiera exactamente 2006 puntos. Al probar con un ancho 81, salían 1999 puntos, por lo que tuve que añadir 7 a la derecha del 6.

Con un pequeño progrma perl transformé los caracteres en medidas de puntos dentro de una imagen grande que pudiera contener a todas ellas.

Después, con otro pequeño programa que pondré a continuación, y usando la librería Imagemagick, pude generar la imagen final. Tardó 40 minutos y procesó 3,2 GB, lo que ocupan las 2006 imágenes que utilicé. El programa, muy sencillo, es el siguiente:


#! /usr/bin/perl

use Image::Magick;

$| = 1;

my @points = (
# points (suprimido)
);

$cols = 94;
$rows = 81;

$xstep = 43;
$ystep = 32;

$xsize = $cols * $xstep;
$ysize = $rows * $ystep;

my ($thumbnail);

$thumbnail=Image::Magick->new(size=>"${xsize}x${ysize}",
pointsize=>24,
fill=>'black');
$thumbnail->Read("xc:white");

while (@points)
{
my $x = shift @points;
my $y = shift @points;
my $imagename = shift @ARGV;
push @ARGV, $imagename;

my $imagen = Image::Magick->new();
$imagen->Read($imagename);
$imagen->Resize(width=>$xstep,height=>$ystep);

$thumbnail->Composite(image=>$imagen,x=>$x,y=>$y);
print ".";
}

$thumbnail->Write("2006.jpg");



Y he aquí el resultado:


UNIX banner program + perl + Imagemagick + 2006 images = Happy 2006!


Tamaño original (1,3MB): aquí (JPG).

Actualización: El programa completo lo podéis descargar aquí, y las instrucciones para utilizarlo:


$ find directorio_de_imágenes -iname \*.jpg | xargs perl composite.pl


Genera el fichero 2006.jpg.

blog comments powered by Disqus