Início > Image Magick > Perl + Image Magick: Exemplo 4 (Gerando Thumbnails)

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

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 ]

  1. Fernando
    4 agosto, 2008 às 9:38 am

    Antes parabenizo pelas informações contidas aqui. Muitas informações úteis relacionadas a perl. Muito legal!

    Quanto aos últimos posts… acho que só falta dar um exemplo de captcha.

    Amigo, tenho uma dúvida que acho que é bastante simples de resolver, porém não encontrei ainda a solução.

    Fica muito inviável toda imagem criada pelo IM ser armazenado no servidor para então mostrá-la ao usuário, certo? Ao invés de gravar a imagem no servidor, o interessante é gravá-la em cache no próprio usuário.

    Como fazer isso? Responda por aqui, ou para meu email: fernandolouis@terra.com.br

    Valeu,
    Abraço!

  2. Whitesnake
    4 agosto, 2008 às 11:30 am

    Olá Fernando, primeiramente obrigado pelos elogios, e gostei da idéia de um captcha, vou ver se coloco nos posts posteriores.

    Bem, e quanto a sua dúvida, realmente você tem razão!
    Você está falando da técnica on-the-fly.

    Há casos onde não há vantagem de se armazenar uma imagem no servidor para somente depois mostrar ao usuário.

    É o que acontece no Exemplo 2 do IM.

    Como vamos mostrar um valor dinâmico, um IP, não faz sentido armazenarmos no servidor, correto?

    Mas note que no próprio exemplo não salvamos a imagem como neste exemplo de thumbnails.

    Quando chamamos a função Write, não informamos um nome de arquivo, mas apenas o formato de saída, seguido por um ‘ – ‘. Isto faz com que a imagem criada seja retornada na tela somente ao usuário, sem ter que necessariamente criar um novo arquivo no servidor.

  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: