Arquivar

Archive for 22 Julho, 2008

Perl + Image Magick: Exemplo 4 (Gerando Thumbnails)

22 Julho, 2008 Whitesnake 2 comentários

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

Imagem Original

 

 

Imagem redimensionada usando GD

Resultado: Usando GD

 

 

Usando ImageMagick

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!”;

##############################################################

 Image Magick
[ 1 | 2 | 3 | 4 | 5 ]