O mais fácil é usar o módulo GD, conforme o exemplo abaixo:
use GD;
my $img=new GD::Image(256,256);
my @colours=();
for my $c (0..255) {
$colours[255-$c]=$img->colorAllocate($c, $c, $c);
}
for my $i (0..255) {
for my $j (0..255) {
$img->setPixel($i, $j, $colours[($i*$j)%255]);
}
}
binmode STDOUT;
print $img->png;
Esse pequeno programa faz o seguinte:
- Instancia uma imagem com 256 pontos de cada lado;
- Cria uma paleta de cinzas (sendo 0 branco e 255 preto);
- Atribui a cada ponto da imagem uma a cor dada pelo produto das coordenadas;
- Escreve a imagem para o stdout.
imagem.pl > img.png
O resultado parece algo vindo de uma ruina Maia e também não ficaria mal num museu de arte moderna:

Trocando os números inteiros por primos (no eixo horizontal; o eixo vertical continua com os inteiros), o resultado ganha bastante ruído, mas continua interessante.


Nenhum comentário:
Postar um comentário