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ó:
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″);
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:-‘);
Muito bom.
Há tempos, eu vinha procurando um bom tutorial de Image::Magick para Perl, o que parece quase não existir na internet.