Perl + Image Magick: Exemplo 1 (Texto c/ Fundo e Borda)
Pessoal, nesse primeiro exemplo creio que vocês já terão uma amostra do que o IM é capaz.
Como objetivo simples, nosso programa deverá mostrar um desenho na tela tendo uma cor de preenchimento tanto para o fundo quanto para a borda, além de uma fonte personalizada! Vamos ver como isto poderá ser feito?
Bem, com o seu editor de texto aberto, vamos ao código inicial que chamará o módulo Magick
use Image::Magick;
Assim como em todos os exemplos posteriores, devemos importar o módulo Image::Magick, para que em seguida, possamos instanciar o objeto.
$novo = Image::Magick-> new(size=>’250×80′);
Note que já na instanciação, setamos o valor de size, ou seja, o tamanho da imagem. Obs.: Este atributo poderia ter sido definido através do comando $novo->Set(size=>’250×80′);
O próximo comando inicial é chamado Read que armazenará uma imagem existente, caso for especificado, ou uma cor de fundo, se especificado por xc.
Como em nosso caso queremos definir uma cor de fundo usamos o seguinte código:
$imagem = $novo-> Read(‘xc:#105CB6′);
Assim, teremos um quadro de 250×80 com o fundo azul escuro. Vamos agora preenchê-lo?
Use o comando Annotate, ele anota um texto na imagem:
$imagem=$novo-> Annotate(font =>”JOKERMAN.TTF”,
fill => ‘white’,
pointsize => 30,
undercolor =>’#839E37′,
stroke =>’#4C6014′,
strokewidth=>’1′,
gravity => ‘Center’,
text => ‘PerlPoint’,
)
Nós usamos vários atributos para obter o resultado desejado. Usamos font para definir a fonte, fill para definir sua cor, pointsize para definir o tamanho, undercolor para definir o fundo, stroke para definir a borda, strokewidth para definir a espessura da borda, gravity para definir o alinhamento, e finalmente text para passar o texto a ser exibido. Obs.: Os atributos de Annotate, incluem family, style, stretch, weight, geometry, antialias, x, y, affine, translate, scale, rotate, skew, align, encoding.
Agora temos todos os dados de nossa imagem definidos, podemos então setar o cabeçalho
print “Content-type:image/pngnn”;
Definir a saída binária
binmode STDOUT;
E finalmente escrever a imagem.
Note que quando queremos exibir a imagem na tela, devemos definir como saída, o formato:-
$imagem=$novo->Write( “png:-” );
Veja o Código Completo:
(im-exemplo1.cgi)
#!/usr/bin/perl
use Image::Magick;##########################################################
$format = “png”; # Formato de saída
$texto = ” PerlPoint “; # Aqui é o texto que vai aparecer na imagem
$novo = Image::Magick-> new(size=>’250×80′); # Cria imagem com as dimensões desejadas
$imagem = $novo-> Read(‘xc:#105CB6′); # Define o fundo
$imagem=$novo-> Annotate(font =>”JOKERMAN.TTF”, # Define a fonte
fill => ‘white’, # Cor da fonte
pointsize => 30, # Tamanho da fonte
undercolor =>’#839E37′, # Cor do fundo do texto
stroke =>’#4C6014′, # Cor do contorno
strokewidth=>’1′, # Expessura do contorno
gravity => ‘Center’, # Alinhamento
text => $texto, # Escreve o texto
);print “Content-type:image/$formatnn”; # Imprime o cabeçalho com o devido formato
binmode STDOUT; # Converte a saída para binario
$imagem=$novo->Write( “$format:-” ); # Mostra a imagem no formato escolhido##########################################################
