Perl + Image Magick: Exemplo 4 (Gerando Thumbnails)
Se você sempre achou dificil encontrar aquele programa que fizesse de tudo com suas imagens, enfim, sua procura acabou não é mesmo?
Ao acompanhar estes tutoriais você com certeza deve estar convencido da qualidade do IM.
E neste assunto o IM também não poderia ficar de fora – Gerar Thumbnails
O ImageMagick é essencial para redimensionar imagens com qualidade. Além de suportar inúmeros tipos de arquivos, ele transforma nossas imagens em perfeitas cópias remodeladas, e o melhor, sem exagerar no tamanho. Vamos ver passo-a-passo de um exemplo de como redimensionar imagens com ele, e em seguida uma demonstração.
Primeiro, devemos instanciar o módulo
$novo = Image::Magick -> new( );
Em seguida, carregamos a imagem que iremos trabalhar
$novo -> Read(“$caminho”);
Agora vamos obter as dimensões da imagem
($largura, $altura) = $novo -> Get(‘width’, ‘height’);
Tendo sido definida a nova largura, fazemos uma regra de três para obter a dimensão final restante, no caso a altura final
$n_a=($n_l*$altura/$largura);
Agora, a função que realiza todo o trabalho, Resize
$nova_imagem = $novo -> Resize(
width => $n_l,
height => $n_a,
);
Enfim mandamos escrever a nova imagem
$nova_imagem = $novo -> Write(“$saida/thumb.jpg”);
Pronto, você agora tem um redimensionador de imagens da melhor qualidade! Se comparando com o GD, podemos notar como o ImageMagick é capaz de suavizar os pontos da imagem, tornando-a assim muito mais nítida. Veja:
![]() Imagem Original
|
|
![]() Resultado: Usando GD
|
![]() Resultado: Usando ImageMagick
|
Veja o Código Completo:
(im-exemplo4.pl)
#!/usr/bin/perl
use Image::Magick;
$caminho =”/home/imagem.jpg”; # Imagem Original
$saida= “/home”; # Saída da Thumbnail
$n_l=”90″; # Nova largura que a thumbnail terá##############################################################
$novo = Image::Magick -> new( ) or die $!; # Cria imagem
$novo -> Read(“$caminho”); # Lê a imagem($largura, $altura) = $novo -> Get(‘width’, ‘height’); # Pega as dimensões
$n_a=($n_l*$altura/$largura); # REGRA DE TRÊS
#### Redimensiona ####
$nova_imagem = $novo -> Resize(
width => $n_l,
height => $n_a,
);
#####################$caminho =~ s/.*(/|\)//gi; # …Queremos só o nome da imagem
$nova_imagem = $novo -> Write(“$saida/thumb_$caminho”);
print “Thumbnail gerada com sucesso!”;##############################################################



