Perl + Image Magick: Exemplo 2 (Texto c/ Fundo Degradê e Relevo)
Com o ImageMagick em poucos passos podemos gerar uma imagem avançada, com relevo e tudo. Mas vamos aplicar isto a uma situação real?
Imagine que você é o programador de um site que necessite gerar botões que recebem valores variáveis, como por exemplo, IPs. Seria impossível realizar este trabalho utilizando o Photoshop para criar uma imagem diferente para cada visitante de seu site, não é mesmo? Mas o IM torna isso possível! E com muito pouco esforço, vejam!
$novo = Image::Magick-> new(size=>’330×65′);
Aqui instânciamos a imagem com o tamanho 330×65, agora devemos setar o fundo degradê
$imagem = $novo-> Read(‘gradient:#105CB6-#839E37′);
Note que especificando o valor gradient: podemos definir as duas cores que irão compor nosso degradê
Feito isso, podemos adicionar um efeito relevo para dar uma aparência real de botão, para isto utilizamos a função Raise
$imagem=$novo-> Raise(‘12×4′);
Assim teremos a imagem com o fundo degradê e com relevo médio em cima e em baixo, porém grande relevo lateral.
Note que o relevo ficou bem evidente. Para dar uma suavizada, podemos utilizar a ferramenta borrar em movimento, MotionBlur
$imagem=$novo->MotionBlur(angle=>60,radius=>8,sigma=>12);
Esses parâmetros podem ser definidos como, o ângulo propriamente dito, o radius sendo a suavidade e o sigma o alcance. Isto basta para obtermos uma boa suavização lateral deixando o botão bem mais definido.
Obs.: Como esse comando foi dado antes do Annotate, ele não irá se aplicar ao texto escrito, se caso o comando fosse aplicado depois, então o texto também seria borrado.
Agora como passo final, vamos anotar o texto na imagem
$imagem=$novo-> Annotate( font => ‘HATTEN.ttf’,
fill => ‘white’,
pointsize => 32,
gravity => ‘Center’,
text => “Olá, seu IP é $ENV{REMOTE_ADDR}”,
);
Como visto logo acima, em text podemos definir qualquer variável, o que faz de nosso programa ser bem especial, pois neste caso, todo visitante obterá o seu próprio IP que é obtido através de $ENV{REMOTE_ADDR}.
Veja o Código Completo:
(im-exemplo2.cgi)
#!/usr/bin/perl
use Image::Magick;
###########################################################
$format = “jpeg”; # Formato de saída
$texto = “Olá, seu IP é $ENV{REMOTE_ADDR}”;
# Aqui é o texto que vai aparecer na imagem$novo = Image::Magick-> new(size=>’330×65′);
# Cria imagem com as dimensões desejadas$imagem = $novo-> Read(‘gradient:#105CB6-#839E37′);
# Lê a imagem e coloca-a em uma variável com um fundo degradê$imagem=$novo-> Raise(‘12×4′); # Adiciona um efeito de relevo
$imagem=$novo->MotionBlur(angle=>60,radius=>8,sigma=>10);
# Adiciona um efeito de borrar$imagem=$novo-> Annotate(font => ‘HATTEN.ttf’,# Fonte escolhida
fill => ‘white’, # Cor da fonte
pointsize => 32, # Tamanho da fonte
gravity => ‘Center’, # Alinhamento
text => $texto, # Escreve o texto
);print “Content-type:image/$formatnn”;
# Imprime o cabeçalho com o devido formatobinmode STDOUT;
# Converte a saída para binario$imagem=$novo->Write( “$format:-” );
# Mostra a imagem no formato escolhido