Instalando o GD no WINDOWS
==========
O GD deve vir junto com o Perl (pelo menos veio no ActivePerl )
Mas seria bom verificar se existe o arquivo GD.pm na pasta perl/site/lib da raíz de seu sistema. Se não tiver, vc deverá instalá-lo do seguinte modo: abra o ppm.exe e execute o seguinte:
rep add http://theoryx5.uwinnipeg.ca/ppms
rep add http://theoryx5.uwin...rn:/PPMServer58
rep add http://www.activesta...es/5.8-windows/
install GD
Isso irá instalar o GD na versão mais recente, caso isso não ocorra, tente estes outros procedimentos:
install http://www.gmod.org/ggb/ppm/GD.ppd
install http://theoryx5.uwin....ca/ppms/GD.ppd
install http://theoryx5.uwin...packages/GD.ppd
Você poderá instalar os pacotes distribuidos pela CPAN que aumentam a capacidade de criação do GD e serão usados ao longo deste tutorial. Ao baixar alguns pacotes você deverá instalá-los na pasta de seu nome (dentro de perl/site/lib/GD) substituindo sempre :: por /
Exemplo:==========O módulo GD::Graph::area deverá ser instalado na pasta perl/site/lib/GD/Graph
Agora que você instalou alguns módulos para o GD, podemos ver alguns exemplos sobre criação de imagens.
Criação de Texto e Objetos
==========
Abaixo passo-a-passo de um arquivo que cria uma imagem com um retângulo em volta.==========Criação de Texto de Objetos
#!/usr/bin/perl
print "Content-type:image/png\n\n";
use GD;
$im = new GD::Image(100,100); # Cria uma imagem com dimensões 100x100
############## Determina Cores em Variáveis ##############
$preto = $im->colorAllocate(0,0,0);
$branco = $im->colorAllocate(255,255,255);
$vermelho = $im->colorAllocate(255,0,0);
$verde = $im->colorAllocate(0,255,0);
$amarelo = $im->colorAllocate(255,255,0);
$azul = $im->colorAllocate(0,0,255);
################################################
$im->transparent($branco); # Transforma o fundo em transparente
$im->interlaced('true'); # Entrelaça a imagem
$im->string(gdGiantFont,15,45,"Texto GD",$vermelho); # Escreve "Texto GD" com a cor vermelho
$im->rectangle(6,94,94,6,$amarelo); # Cria um 'retângulo' com a cor amarelo
$im->fill(34,45,$preto); # Pinta o fundo de preto
binmode STDOUT; # Verifica se o modo é binário
print $im->png; # Transforma a imagem em PNG e exibe.
Package Graph e seus componentes
==========
Bem, abaixo temos arquivos de exemplo que utilizam o componente Graph para a criação de gráficos.
Vejam:Gráfico de área
#!/usr/bin/perl
use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI ':standard';
use GD::Graph::area; # Usamos 'GD::Graph::area' pois nosso objetivo é criar um gráfico de área
################## Cria as variáveis para exibir o gráfico #####################
my @campos = ('Out 2003','Nov 2003','Dez 2003','Jan 2004','Fev 2004','Mar 2004');
my @valores = ('547','2282','2798','2354','4326','357');
my @graf = (\@campos, \@valores);
################################################################
####################### Criação da imagem ############################
my $grafico = GD::Graph::area->new(500, 300); # Os valores de new são as dimensões do gráfico
$grafico->set(
x_label => 'Mes', # Rótulo horizontal
y_label => 'Número de Visitas', # Rótulo vertical
title => 'Visitas Mensais de "Um Site Qualquer"', # Título do gráfico
) or warn $grafico->error;
my $imagem = $grafico->plot(\@graf) or die $grafico->error;
################################################################
############################# Exibe o gráfico #########################
print "Content-type: image/png\n\n";
print $imagem->png;Gráfico de barra
#!/usr/bin/perl
use strict;
use CGI ':standard';
use GD::Graph::bars; # Usamos 'GD::Graph::bars' pois nosso objetivo é criar um gráfico de barra
################## Cria as variáveis para exibir o gráfico #####################
my @campos = ('Out 2003','Nov 2003','Dez 2003','Jan 2004','Fev 2004','Mar 2004');
my @valores = ('547','2282','2798','2354','4326','357');
my @graf = (\@campos, \@valores); # Nomes dos campos antes dos valores
###############################################################
############################ Criação da imagem ######################
my $grafico = GD::Graph::bars->new(500, 300); # Os valores de new são as dimensões do gráfico
$grafico->set(
bar_width => '25', # Expessura das barras
bar_spacing => '4', # Espaçamento entre as barras
x_label => 'Mês', # Rótulo horizontal
y_label => 'Visitas Totais', # Rótulo vertical
title => 'Visitas Mensais de "Um Site Qualquer"', # Título do gráfico
) or warn $grafico->error;
my $imagem = $grafico->plot(\@graf) or die $grafico->error;
###############################################################
############################### Exibe o gráfico ######################
print "Content-type: image/png\n\n";
print $imagem->png;==========Gráfico torta-circular
#!/usr/bin/perl
use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI ':standard';
use GD::Graph::pie; # Usamos 'GD::Graph::pie' pois nosso objetivo é criar um gráfico torta-circular
#################### Cria as variáveis para exibir o gráfico ########################
my @campos = ('Out 2003','Nov 2003','Dez 2003','Jan 2004','Fev 2004','Mar 2004');
my @valores = ('547','2282','2798','2354','4326','357');
my @graf = (\@campos, \@valores);
#####################################################################
########################## Criação da imagem ##############################
my $grafico = GD::Graph::pie->new(320, 300); # Os valores de new são as dimensões do gráfico
$grafico->set(
pie_height => '32', # Expessura do efeito 3d. Ideal 0,1*altura
start_angle => '0', # Ângulo de onde iniciará os gráficos
suppress_angle => '14px', # Se o nome do campo for menor que a área mencionada aqui ele não será exibido.
label => 'Exemplo de Gráfico Circular', # Texto a aparecer abaixo do gráfico
title => 'Visitas Mensais de "Um Site Qualquer"', # Título do gráfico
'3d' => '1', # Adiciona efeito 3d se 1
) or warn $grafico->error;
my $imagem = $grafico->plot(\@graf) or die $grafico->error;
#####################################################################
############################### Exibe o gráfico ############################
print "Content-type: image/png\n\n";
print $imagem->png;
Códigos de Barra
==========
Esse é um simples exemplo que gera códigos de barra de acordo com número especificado. A função Barcode necessita de um componente que neste exemplo utilizamos o GD::Barcode::Matrix2of5.Códigos de Barra
#!/usr/bin/perl
use GD::Barcode::Matrix2of5; # GD::Matrix2of5 pode ser substituido por outro componente de Barcode
binmode(STDOUT);
print "Content-Type: image/png\n\n";
print GD::Barcode::Matrix2of5->new('123')->plot->png; #O valor de new() é o número que será transformado em código de barra
==========
Se vcs quiserem exibir a imagem por link externo basta chamá-lo pela tag HTML comum de imagem: