----------------------------------
O Image Magick pra quem não conhece é uma poderosíssima ferramenta para manipulação de gráficos através de linguagens dinâmicas ou não. O Image Magick pode ser utilizado nas linguagens C, C++, CGI/Perl, Java, Python e várias outras. O ponto alto do Image Magick em relação ao GD (seu principal concorrente) é a compatibilidade de formatos, enquanto o GD trabalha apenas com JPG e PNG (exceto algumas versões que suportam GIF), o Image Magick suporta trabalhar com a impressionante marca de até 144 tipos de arquivos diferentes. Aqui neste tutorial, veremos alguns exemplos com comentários sobre como utilizar esta belíssima ferramenta através do Perl.
Softwares Utilizados
----------------------------------
Estes foram os softwares que utilizei para criar os exemplos do tutorial:Instalação
----------------------------------
A instalação do Image Magick não possui complicações.
Porém, há um bug onde ao utilizar o Perl Magick, pode ser que o Perl responda que não foi possível ler uma dll. Algo como: Can't load 'C:/perl/site/lib/auto/Image/Magick/Magick.dll' for module Image::Magick.
Caso isso ocorra, você deve copiar todos os arquivos dll's de onde se encontra o binário 'imdisplay.exe' (o padrão é 'C:/Arquivos de Programas/ImageMagick-XXX-XXX) para a pasta 'C:/perl/site/lib/auto/Image/Magick. Mas lembre-se de copiar também as dll's ocultas, caso contrário, o erro persistirá.
----------------------------------
Gerando Thumbnail
----------------------------------
Esta é uma alternativa pra quem quiser fazer thumbnails com qualidade, e também pode servir para quem quiser converter o formato de suas imagens. Veja como é simples:
#!/usr/bin/perl
print "Content-type:text/html\n\n";
use Image::Magick;
$imagem = 'imagem.jpg'; # Imagem a redimensionar
$n_largura = "100"; # Nova largura da imagem
$n_altura = "100"; # Nova altura da imagem
############################################################################
$novo = Image::Magick -> new(); # Cria imagem
$result = $novo -> Read($imagem); # Lê a imagem
($largura, $altura) = $novo -> Get('width', 'height'); # Pega as dimensões
$novo_nome = "$n_largura x $n_altura.gif"; # Define o novo nome da imagem e o formato de saída
#### Redimensiona ####
$nova_imagem = $novo -> Resize(
width => $n_largura,
height => $n_altura,
);
######################
$nova_imagem = $novo -> Write($novo_nome); # Grava a nova imagem
print "A thumbnail foi criada com sucesso!";
############################################################################
Texto com Fundo e Borda
----------------------------------
Este é um exemplo super legal de como fazer um texto com CGI dinâmico, utilizando o Image Magick
#!/usr/bin/perl
use Image::Magick;
############################################################################
$format = "png"; # Formato de saída
$texto = " Olá, seu IP é $ENV{REMOTE_ADDR} "; # Aqui é o texto que vai aparecer na imagem
$novo = Image::Magick-> new(size=>'250x80'); # Cria imagem com as dimensões desejadas
$imagem = $novo-> Read('xc:black'); # Lê a imagem e coloca-a em uma variável com um fundo degradê
$imagem=$novo-> Annotate(font =>"Humanist.ttf", # Define a fonte
fill => 'white', # Cor da fonte
pointsize => 18, # Tamanho da fonte
undercolor =>'DarkRed', # Cor do fundo do texto
stroke =>'Red', # Cor do contorno
strokewidth=>'0,8', # Expessura do contorno
style =>'Italic', # Adiciona estilo itálico
gravity => 'Center', # Alinhamento
text => $texto, # Escreve o texto
);
print "Content-type:image/$format\n\n"; # 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
############################################################################
Botão com Fundo Degradê
----------------------------------
Isto seria praticamente impossível de se fazer no GD, mas em poucos passos o Image Magick faz esta excelente imagem que parece ter sido feita com programas profissionais como Fireworks e Photoshop
#!/usr/bin/perl
use Image::Magick;
############################################################################
$format = "jpg"; # Formato de saída
$texto = "Voltar"; # Aqui é o texto que vai aparecer na imagem
$novo = Image::Magick-> new(size=>'90x30'); # Cria imagem com as dimensões desejadas
$imagem = $novo-> Read('gradient:#009999-#0066CC'); # Lê a imagem e coloca-a em uma variável com um fundo degradê
$imagem=$novo-> Raise('4x4'); # Adiciona um efeito de relevo
$imagem=$novo-> Annotate(font =>"Humanist.ttf", # Define a fonte
fill => 'white', # Cor da fonte
pointsize => 19, # Tamanho da fonte
style =>'Italic', # Adiciona estilo itálico
gravity => 'Center', # Alinhamento
text => $texto, # Escreve o texto
);
print "Content-type:image/$format\n\n"; # 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
############################################################################
Gerando GIFs Animados
----------------------------------
Veja algo muito interessante que você pode fazer com o Image Magick. Neste exemplo eu fiz um banner:
#!/usr/bin/perl
print "Content-type:image/gif\n\n";
use Image::Magick;
############################################################################
$texto = "ENTRE E CONFIRA"; # Aqui é o texto que vai aparecer na imagem
$novo = Image::Magick -> new(size=>'468x60'); # Cria imagem com as dimensões desejadas
######## PRIMEIRO QUADRO ########
$imagem = $novo -> Read('xc:yellow'); # Lê a imagem e coloca-a em uma variável com um fundo amarelo
$imagem=$novo-> Annotate(font =>"Humanist.ttf", # Define a fonte
fill => 'white', # Cor da fonte
pointsize => 40, # Tamanho da fonte
style =>'Italic', # Adiciona estilo itálico
gravity => 'Center', # Alinhamento
text => $texto, # Escreve o texto
);
#################################
######## SEGUNDO QUADRO ########
$imagem = $novo -> Read('xc:red'); # Lê a imagem e coloca-a em uma variável com um fundo vermelho
$imagem=$novo-> Annotate(font =>"Humanist.ttf", # Define a fonte
fill => 'white', # Cor da fonte
pointsize => 40, # Tamanho da fonte
style =>'Italic', # Adiciona estilo itálico
gravity => 'Center', # Alinhamento
text => $texto, # Escreve o texto
);
################################
####### TERCEIRO QUADRO ########
$imagem = $novo -> Read('xc:blue'); # Lê a imagem e coloca-a em uma variável com um fundo azul
$imagem=$novo-> Annotate(font =>"Humanist.ttf", # Define a fonte
fill => 'white', # Cor da fonte
pointsize => 40, # Tamanho da fonte
style =>'Italic', # Adiciona estilo itálico
gravity => 'Center', # Alinhamento
text => $texto, # Escreve o texto
);
################################
binmode STDOUT; # Converte a saída para binario
$imagem=$novo->Write( "gif:-" ); # Mostra a imagem em formato GIF
############################################################################
Bem, por enquanto é só, se eu fosse citar exemplos de todas características do Image Magick este tutorial não sairia nunca, mas, eu atualizarei este tópico ainda.
Aguardem!
Até mais.
(Última atualização: 23/10/05 - Instalação)