Jump to content


Tutorial: Image Magick


  • Faça o login para participar
4 replies to this topic

#1 Whitesnake

Whitesnake
  • Visitantes

Posted 05/09/2004, 16:11

Introdução
----------------------------------

O Image Magick pra quem não conhece é uma poderosíssima ferramenta para manipulação de gráficos através de linguagens dinâmicas ou não. O Image Magick pode ser utilizado nas linguagens C, C++, CGI/Perl, Java, Python e várias outras. O ponto alto do Image Magick em relação ao GD (seu principal concorrente) é a compatibilidade de formatos, enquanto o GD trabalha apenas com JPG e PNG (exceto algumas versões que suportam GIF), o Image Magick suporta trabalhar com a impressionante marca de até 144 tipos de arquivos diferentes. Aqui neste tutorial, veremos alguns exemplos com comentários sobre como utilizar esta belíssima ferramenta através do Perl.

Softwares Utilizados
----------------------------------

Estes foram os softwares que utilizei para criar os exemplos do tutorial:Instalação
----------------------------------

A instalação do Image Magick não possui complicações.
Porém, há um bug onde ao utilizar o Perl Magick, pode ser que o Perl responda que não foi possível ler uma dll. Algo como: Can't load 'C:/perl/site/lib/auto/Image/Magick/Magick.dll' for module Image::Magick.
Caso isso ocorra, você deve copiar todos os arquivos dll's de onde se encontra o binário 'imdisplay.exe' (o padrão é 'C:/Arquivos de Programas/ImageMagick-XXX-XXX) para a pasta 'C:/perl/site/lib/auto/Image/Magick. Mas lembre-se de copiar também as dll's ocultas, caso contrário, o erro persistirá.
----------------------------------



Gerando Thumbnail
----------------------------------

Esta é uma alternativa pra quem quiser fazer thumbnails com qualidade, e também pode servir para quem quiser converter o formato de suas imagens. Veja como é simples:

#!/usr/bin/perl
print "Content-type:text/html\n\n";
use Image::Magick;

$imagem = 'imagem.jpg'; # Imagem a redimensionar
$n_largura = "100";   # Nova largura da imagem
$n_altura  = "100";   # Nova altura  da imagem

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

$novo = Image::Magick -> new(); # Cria imagem
$result = $novo -> Read($imagem); # Lê a imagem

($largura, $altura) = $novo -> Get('width', 'height'); # Pega as dimensões

$novo_nome = "$n_largura x $n_altura.gif"; # Define o novo nome da imagem e o formato de saída

#### Redimensiona ####
$nova_imagem  = $novo -> Resize( 
width => $n_largura,
height => $n_altura,
);
######################

$nova_imagem = $novo -> Write($novo_nome); # Grava a nova imagem

print "A thumbnail foi criada com sucesso!";
############################################################################




Texto com Fundo e Borda
----------------------------------

Este é um exemplo super legal de como fazer um texto com CGI dinâmico, utilizando o Image Magick

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

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

$format = "png"; # Formato de saída

$texto  = " Olá, seu IP é $ENV{REMOTE_ADDR} ";  # Aqui é o texto que vai aparecer na imagem

$novo  = Image::Magick-> new(size=>'250x80'); # Cria imagem com as dimensões desejadas

$imagem = $novo-> Read('xc:black'); # Lê a imagem e coloca-a em uma variável com um fundo degradê

$imagem=$novo-> Annotate(font      =>"Humanist.ttf", # Define a fonte
                                              fill      => 'white',              # Cor da fonte
                                              pointsize  => 18,               # Tamanho da fonte
                                              undercolor =>'DarkRed',  # Cor do fundo do texto
                                              stroke    =>'Red',               # Cor do contorno
                                              strokewidth=>'0,8',          # Expessura do contorno
                                              style      =>'Italic',            # Adiciona estilo itálico
                                              gravity    => 'Center',      # Alinhamento
                                              text      => $texto,          # Escreve o texto
);

print "Content-type:image/$format\n\n"; # Imprime o cabeçalho com o devido formato
binmode STDOUT;                              # Converte a saída para binario
$imagem=$novo->Write( "$format:-" );  # Mostra a imagem no formato escolhido

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




Botão com Fundo Degradê
----------------------------------

Isto seria praticamente impossível de se fazer no GD, mas em poucos passos o Image Magick faz esta excelente imagem que parece ter sido feita com programas profissionais como Fireworks e Photoshop

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

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

$format = "jpg"; # Formato de saída

$texto  = "Voltar";  # Aqui é o texto que vai aparecer na imagem

$novo  = Image::Magick-> new(size=>'90x30'); # Cria imagem com as dimensões desejadas

$imagem = $novo-> Read('gradient:#009999-#0066CC'); # Lê a imagem e coloca-a em uma variável com um fundo degradê

$imagem=$novo-> Raise('4x4'); # Adiciona um efeito de relevo


$imagem=$novo-> Annotate(font      =>"Humanist.ttf", # Define a fonte
                                              fill      => 'white',              # Cor da fonte
                                              pointsize  => 19,               # Tamanho da fonte
                                              style      =>'Italic',            # Adiciona estilo itálico
                                              gravity    => 'Center',      # Alinhamento
                                              text       => $texto,          # Escreve o texto
);

print "Content-type:image/$format\n\n"; # Imprime o cabeçalho com o devido formato

binmode STDOUT;                              # Converte a saída para binario
$imagem=$novo->Write( "$format:-" );  # Mostra a imagem no formato escolhido

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




Gerando GIFs Animados
----------------------------------

Veja algo muito interessante que você pode fazer com o Image Magick. Neste exemplo eu fiz um banner:

#!/usr/bin/perl
print "Content-type:image/gif\n\n";
use Image::Magick;

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

$texto  = "ENTRE E CONFIRA";  # Aqui é o texto que vai aparecer na imagem

$novo  = Image::Magick -> new(size=>'468x60'); # Cria imagem com as dimensões desejadas


######## PRIMEIRO QUADRO ########

$imagem = $novo -> Read('xc:yellow'); # Lê a imagem e coloca-a em uma variável com um fundo amarelo

$imagem=$novo-> Annotate(font      =>"Humanist.ttf", # Define a fonte
                                              fill      => 'white',              # Cor da fonte
                                              pointsize  => 40,               # Tamanho da fonte
                                              style      =>'Italic',            # Adiciona estilo itálico
                                              gravity    => 'Center',      # Alinhamento
                                              text       => $texto,          # Escreve o texto
);

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


######## SEGUNDO QUADRO ########

$imagem = $novo -> Read('xc:red'); # Lê a imagem e coloca-a em uma variável com um fundo vermelho

$imagem=$novo-> Annotate(font      =>"Humanist.ttf", # Define a fonte
                                              fill      => 'white',              # Cor da fonte
                                              pointsize  => 40,               # Tamanho da fonte
                                              style      =>'Italic',            # Adiciona estilo itálico
                                              gravity    => 'Center',      # Alinhamento
                                              text       => $texto,          # Escreve o texto
);
################################

####### TERCEIRO QUADRO ########

$imagem = $novo -> Read('xc:blue'); # Lê a imagem e coloca-a em uma variável com um fundo azul

$imagem=$novo-> Annotate(font      =>"Humanist.ttf", # Define a fonte
                                              fill      => 'white',              # Cor da fonte
                                              pointsize  => 40,               # Tamanho da fonte
                                              style      =>'Italic',            # Adiciona estilo itálico
                                              gravity    => 'Center',      # Alinhamento
                                              text       => $texto,          # Escreve o texto
);

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




binmode STDOUT;                   # Converte a saída para binario
$imagem=$novo->Write( "gif:-" );  # Mostra a imagem em formato GIF

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




Bem, por enquanto é só, se eu fosse citar exemplos de todas características do Image Magick este tutorial não sairia nunca, mas, eu atualizarei este tópico ainda.
Aguardem!
Até mais.

(Última atualização: 23/10/05 - Instalação)

#2 jgcl

jgcl

    João Gabriel C. Laass, Serra/ES

  • Usuários
  • 559 posts
  • Sexo:Não informado
  • Localidade:Serra / ES
  • Interesses:Tudo!

Posted 21/10/2005, 17:29

Corriga os cabeçalhos dos exemplos... porque é image/gif e não text/html ;)

Edição feita por: jgcl, 21/10/2005, 17:42.

João Gabriel
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org

#3 Whitesnake

Whitesnake
  • Visitantes

Posted 23/10/2005, 20:18

Corriguei hehe

#4 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 07/10/2017, 09:19

Buy Vardenafil 10mg viagra Order Ed Pills Which Is Trust Website To Buy Viagra

#5 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 21/10/2017, 00:16

Levitra Orodispersibile Prezzo In Farmacia pharmacy prices for levitra Propecia Embarazo Efectos Secundarios




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq