Perl + GD Graphic Library: Exemplo 1 (Desenho+Texto)
Com o GD instalado podemos então começar as demonstrações.
Para começar iremos fazer um programa em CGI que criará uma imagem contendo o desenho de um quadrado com uma borda e um texto em seu centro.
Após indicar o caminho do Perl, nosso programa deve conter no começo a chamada do módulo GD assim também como a instânciação deste:
use GD;
my $im = new GD::Image(100,100);
Já de início definimos as dimensões da nova imagem e a armazenamos na variável $im.
Em seguida vamos definir as cores com as quais iremos trabalhar.
Para isto usaremos a função colorAllocate do GD passando por parâmetro os valores RGB da cor desejada. Note:
my $amarelo = $im->colorAllocate(255,255,0);
Para definir a cor de fundo do nosso desenho usamos a função fill passando posições nulas e a cor por parâmetro:
$im->fill(0,0,$preto);
Também foi feito um retângulo na imagem para exemplificar a função rectangle. Aqui passamos por parâmetro as dimensões (inicioX,fimX,inicioY,fimY) junto com a cor:
$im->rectangle(6,94,94,6,$amarelo);
E para escrevermos o texto na imagem usamos a função string, onde passamos o estilo da fonte, x, y, texto e a cor do texto:
$im->string(gdGiantFont,12,45,”GD + PERL”,$vermelho);
Para finalmente exibir na tela, primeiro devomos converter a saída para modo binário usando:
binmode STDOUT;
Também é necessário setar o formato de saída no cabeçalho:
print “Content-type:image/png\n\n”;
Finalmente agora podemos enviar a imagem para o usuário.
Para isto imprimimos na tela a imagem convertida para o formato de saída desejado (gif,jpeg,png…).
No nosso caso utilizamos png:
print $im->png;
Veja o Código Completo:
(gd-exemplo1.cgi)
#!/usr/bin/perl
use GD;my $im = new GD::Image(100,100); # Cria uma imagem com dimensões 100×100
############## Determina Cores em Variáveis ##############
my $preto = $im->colorAllocate(0,0,0);
my $branco = $im->colorAllocate(255,255,255);
my $vermelho = $im->colorAllocate(255,0,0);
my $amarelo = $im->colorAllocate(255,255,0);
################################################$im->fill(0,0,$preto); # Pinta o fundo de preto
$im->rectangle(6,94,94,6,$amarelo); # Cria um ‘retângulo’ com a cor amarelo
$im->string(gdGiantFont,12,45,”GD + PERL”,$vermelho); # Escreve texto com a cor vermelho
binmode STDOUT; # Verifica se o modo é binário
print “Content-type:image/png\n\n”;
print $im->png; # Transforma a imagem em PNG e exibe.
