Inicial > Image Magick > Perl + Image Magick: Exemplo 3 (Montagem)

Perl + Image Magick: Exemplo 3 (Montagem)

Neste terceiro exemplo de utilização do Image Magick iremos ver como usá-lo para realizar montagens.

Capturamos uma antiga imagem de Johnny Depp, e queremos deixá-la com um visual mais atual do ator. Pois vejam só:

Johnny Depp

Johnny Depp

Não, não pode ser! Este não é o famoso Jack Sparrow que conhecemos!

Mas, algo me diz que o Perl, como sempre, poderá resolver nosso problema!

E desta vez, contará com a ajuda de seu ajudante aliado, carinhosamente apelidado de IM.

Pois bem, vamos sair de cena e ver como o Perl e o IM realizam esta proeza?

AH! Ia me esquecendo! Não posso deixar de dar-lhes alguns itens para ornamentar nosso famoso pirata aí né?

Ok! Peguei na net um chapéu de pirata, e um bigode “encrementado”, o que acham?

  

Com certeza! O resultado disso tudo no mínimo será interessante!

Bem, como já não nos resta mais nada aqui, então, Perl, mãos-à-obra!!!!!


O primeiro passo é instanciar as imagens que serão usadas e armazená-las em $imagem que será o resultado final.

Lembrando que a primeira a ser instanciada é a que será usada como base ou fundo. No nosso caso é a imagem “johnny_depp.jpg”, que armazenaremos numa variável à caráter! :]

$johnny=new Image::Magick();
$imagem=$johnny->ReadImage(“johnny_depp.jpg”);

Como usaremos imagens carregadas de arquivos diferentes, usamos a função ReadImage. Este procedimento deve ser feito para cada imagem que formos trabalhar.

Note que a imagem que contém o bigode é a única colorida. Para padronizá-la ao tom-de-cinza inicial, usamos o seguinte comando:

$bigode->Quantize(colorspace=>’gray’);

Pronto, agora que carregamos todas as imagens, devemos clonar a base para fazermos a montagem. Fazemos isto assim:

$saida=$johnny->Clone( );

Agora é só jogar as imagens por cima informando o local onde inserir, por x e y e gravity. Note:

$saida->Composite(image=>$bigode,x=>3,y=>80,gravity=>’North’);

$saida->Composite(image=>$chapeu,x=>0,y=>0,gravity=>’North’);

E o tão esperado comando, responsável por fazer de Johnny Depp, um Pirata do Caribe é: Montage

$montagem=$saida->Montage(geometry=>”188×236″); 

 


im-exemplo3.cgi
Resultado: im-exemplo3.cgi

Veja o Código Completo
(im-exemplo3.cgi)

#!/usr/bin/perl
use Image::Magick;

$johnny=new Image::Magick();
$imagem=$johnny->ReadImage(“johnny_depp.jpg”);

$bigode=new Image::Magick();
$imagem=$bigode->ReadImage(“bigode.png”);
$bigode->Quantize(colorspace=>’gray’);

$chapeu=new Image::Magick();
$imagem=$chapeu->ReadImage(“chapeu.png”);

$saida=$johnny->Clone();
$saida->Composite(y=>80,x=>3,image=>$bigode,gravity=>’North’);
$saida->Composite(y=>0,x=>0,image=>$chapeu,gravity=>’North’);

$larg=$johnny->Get(‘width’);
$alt  =$johnny->Get(‘height’);
$montagem=$saida->Montage(geometry=>”$largx$alt”);

binmode STDOUT;
print “Content-type:image/pngnn”;
print $montagem->Write(‘png:-‘);

  1. favq1
    16 janeiro, 2010 às 9:31 am

    Muito bom.
    Há tempos, eu vinha procurando um bom tutorial de Image::Magick para Perl, o que parece quase não existir na internet.

  1. No trackbacks yet.

Deixe um comentário