Pages

Sunday, May 28, 2006

ImageMagick - convert

O ImageMagick é uma coleção de ferramentas para manipulação de imagens. São elas: convert, identify, mogrify, composite, montage, compare, display, animate, import, conjure

O convert é um pequeno utilitário que permite converter o formato de da imagem de forma bem simples, além de umas 200 outras tarefas. É, possivelmente, dos utilitários do ImageMagick o mais útil (sem diminuir a importância e a utilidade dos utilitários).

Para uma simples conversão de formatos, experimente:
convert img_original.jpg img_novoformato.png

Ele permite modificar o tamanho do arquivo.
Para dimuir a imagem a 60% do tamanho original, utilizamos:
convert img_original.jpg -resize 60% img_reduzida.png

Também é possível aumentar o tamanho da imagem.
Para aumentar a imagem original em 20% do seu tamanho, temos:
convert img_original.jpg -resize 120% img_ampliada.png

Assim como também é possível especificar um tamanho absoluto para a figura:
convert img_original.jpg -resize 640x480 img_novotamanho.png

O convert também permite criar imagens com base em contextos, tipo frases e/ou palavras, um exemplo vindo do próprio manual do convert é:

convert -size 320x85 xc:transparent -font Bookman-DemiItalic -pointsize 72 -draw "text 25,60 'Magick'" -channel RGBA \
-gaussian 0x6 -fill darkred -stroke magenta -draw "text 20,55 'Magick'" fuzzy-magick.png


O comando acima cria uma imagem chamada "fuzzy-magick.png" com o canal de cores RGBA (opção -channel), com o texto 'Magick' (opção -draw), escrito com a fonte 'Bookman-DemiItalic'.

Observe que o comando possui duas chamadas de -draw figuras, uma dentro da outra escrito o mesmo texto, mas as opções do -draw para o texto diferenciam o tamanho e posição do texto. O primeiro -draw produz o efeito "sombra" e o segundo -draw é preenchido com a cor 'darkred' e com o contorno na cor 'magenta'. A figura é transparente (xc:transparent) e possui o tamanho 320x85 (-size)

Outras utilidades do convert:

  • Para equalizar ou normalizar as imagens:
    convert -equalize img_orig.jpg img_equal.jpg
    convert -normalize img_orig.jpg img_equal.jpg
  • Para modificar o padrão de compressão (o default é 75%):
    convert -quality 90 img.png img-90.jpg
  • Para especificar o tipo de conversão:
    convert -compress JPEG img.png img.new

    Note nesse último exemplo que .new não é uma extensão conhecida, logo, para realizar a conversão é preciso especificar corretamente qual é o tipo do arquivo de saída. A opção -compress tem prioridade sobre a extensão do arquivo de saída, exemplo: convert -compress JPEG img.png img.bmp, gera um arquivo chamado img.bmp que na verdade é um jpeg de extensão trocada.
  • Para criar um PDF com base em diversas imagens:
    convert img_01.jpg img_02.jpg ... img_N.jpg arquivo.pdf
  • Convertendo todas as imagens em lote (exemplo> png -> jgp) :
    find ./ -name '*.png' -exec convert -quality 90 '{}' '{}'.jpg \;

O comando converte possuí exatamente 180 opções, logo é de se imaginar o poder desse pequeno utilitário.

Ainda assim, o uso mais comum desse utilitário é sua capacidade de converter o formato das figuras e de redimensioná-las.

Além disso, eu considero a forma mais fácil de criar uma figura com texto apenas. Experimente, por exemplo, substituir o 'Magick' do exemplo anterior por 'Ubuntu' e você acaba de criar um logo do Ubuntu. Ao mudar a fonte e acertar as cores é possível recriar o banner oficial do ubuntu (sem o logo, claro) com grande facilidade.


Technorati Tags:

4 comments:

  1. Excelente dica, postei no meu blog uma dica com base na sua, obviamente dando os devidos créditos. Hoje tive que manipular uma porção de fotos e sua dica me quebrou um galho enorme.

    ReplyDelete
  2. Boa !
    É sempre muito bom ver trabalhos gerando frutos.

    []'s

    ReplyDelete
  3. Para converter imagens em lote, o comando mostrado no link abaixo funcionou muito mais rápido:

    http://lifehacker.com/342308/batch-convert-images-with-image-magick

    ReplyDelete
  4. Anonymous11/5/09 19:43

    Estou fazendo um trabalho em Linux sobre o comando convert e passei por aqui. Espero que tudo dê certo. THANKS!

    ReplyDelete