07 junho 2007

Tratamento de imagens, modo rápido.

As máquinas fotográficas digitais são cada vez mais baratas, mais acessíveis a todos e a criar um novo "problema" entre os seus utilizadores. É que facilmente ficamos atolados em centenas ou milhares de fotos no PC. E muitas das fotos precisam de ser retocadas ou corrigidas, seja para imprimir ou para colocar online. Pequenas tarefas como redimensionar imagens ou colocar assinaturas, podem durar horas. Agora imaginem normalizar cores, brilho ou contrastes nessas centenas de fotos! Quando acabares de o fazer nas fotos das férias anteriores, já estás para entrares noutras férias...

Um dos programas mais usados para trabalhar em imagens é o Photoshop, mas quando se fala em Linux é sem dúvida, o Gimp o programa escolhido! Porque é distribuído em todas as distros de Linux e faz o mesmo que o Photoshop. Mas com qualquer destes dois programas ou outros também conhecidos, continuamos com o problema de passar tempos intermináveis a tratar das fotos. Basta imaginar o tempo que se gasta a redimensionar uma foto com o Gimp:

  • Abrir a imagem com o Gimp
  • Menu Imagem
  • Escolher Scale Image
  • Definir largura e altura e clicar Escala
  • Menu File e escolher Save as...
  • Escolher um nome e clicar Guardar
  • Definir qualidade e Ok











E no meu caso foram cerca de 35 segundos! É certo que se forem mais, o tempo médio de trabalho em cada imagem irá diminuir, mas mesmo assim....
A solução como já devem ter adivinhado, é usar a linha de comandos e o famoso ImageMagick. E o que podes fazer com ele?

  • Converter formatos noutros formatos
  • Transformar imagens (tamanho, rotação, etc)
  • Escrever e desenhar formas na imagem
  • Decorá-las
  • Adicionar efeitos especiais (blur, sharpening)
  • Editar e combinar imagens
  • Além que se pode tirar screenshots e visualizar imagens :)

Transformações

Podemos usar dois programas que fazem parte do ImageMagick, o convert e o mogrify. Eles são praticamente iguais nas suas funções, só que o convert salva o resultado noutro ficheiro e o mogrify faz as alterações no ficheiro original.
Por exemplo, redimensionar imagens:

convert imagem1.tiff -resize 40% imagem2.jpg
convert imagem3.jpg -resize 640x480 imagem4.jpg

No primeiro exemplo, além de se encolher a imagem, ela também foi convertida noutro formato bastando escolher a extensão desejada. A opção -resize tanto aceita valores relativos (%) como aceita valores absolutos (640x480). Mais exemplos de transformações:

mogrify -geometry 800 imagem1.jpg

No caso acima, as proporções são mantidas, ficando a largura com 800 pixels. Também se pode rodar a imagem no sentido dos ponteiros do relógio, indicando o número de graus:

mogrify -rotate 90 imagem1.jpg

Também se pode inverter a imagem, seja na horizontal (flop) ou vertical (flip) tal como a seguir:

convert imagem1.jpg -flop imagem1_invertida_hotizontal.jpg











E podes fazer o cropping da imagem de seguida:

convert imagem2.jpg -crop 100x100+10+10 imagem3.jpg


Decorações

Por vezes fica bem colocar uma margem ou borda na imagem. Pela linha de comandos basta fazer o seguinte:

convert foto.jpg -bordercolor white -border 10x20 foto_com_margens.jpg
mogrify -bordercolor „#ddddff” -border 10 foto2.jpg

As cores podem ser especificadas pelo nome (em ingles), pelo valor RGB ou pelo valor CMYK


Efeitos especiais

Umas das coisas que fazemos logo numa foto é corrigir as cores, normalizá-las. Algo bem simples na linha de comandos:

convert foto.jpg -normalize foto_melhor.jpg

Ou corrigir o contraste:

convert foto2.jpg -contrast foto_com_menos_contraste.jpg
convert foto2.jpg +contrast foto_com_mais_contraste.jpg
convert foto.jpg +contrast +contrast foto_com_alto_contraste.jpg

Podes usar vários filtros imediatamente na imagem como o "blur", o "gaussian", o "sharpen", o "noise" ou até inverter as cores. Alguns exemplos:

convert foto.jpg -sharpen 2x4 sharpened_foto.jpg
convert foto.jpg -noise Gaussian noisy_foto.jpg
convert negativa.jpg -negate positiva.jpg











Escrever

É fácil escrever e desenhar nas imagens, mas fico-me pela escrita. Deixo aqui dois exemplos de como o fazer:

convert imagem.jpg -draw 'text 50,50 Liedson!' foto_assinada.jpg
convert imagem.jpg -fill white -gravity Southeast -draw 'text 50,50 Liedson!' foto_assinada.jpg









O parametro fill é para indicar a cor da fonte, e o parametro gravity é para colocar a direção como North, East, etc.

Screenshots

Já são muito conhecidos estes comandos, mas convém relembrar. Neste caso usa-se o comando import , com ou sem parâmetros e o resultado final:

import screenshot.jpg
import -frame screenshot2.jpg

No segundo caso, a imagem terá uma decoração adicionada pelo window manager. Quando se faz enter num destes comandos, o cursor adopta um outro desenho esperando que cliquemos no ecran para selecionar o que queremos tirar para o screenshot.

Automatizando

Eis um pequeno script que irá fazer algumas modificações em todas as imagens que estiverem numa determinada pasta. As modificações são: normalizar cores; redimensionar de modo a ter no máximo 600 de largura; adicionar uma frame de 56 pixels; adicionar uma assinatura.

#!/bin/sh
for i in *jpg
do
echo $i
mogrify -normalize \
-geometry 600 \
-bordercolor yellow -border 5 \
-fill white \
-font \
-*-helvetica-*-r-*-*-18-*-*-*-*-*-*-2 \
-gravity SouthEast \
-draw 'text 20,20 "photographer: Eu"'\
$i
done
Salvas como conversor.sh e dá-lhe permissões de execução e de seguida corre o script na pasta das imagens. Atenção que irá alterar todas as imagens que lá tenhas!

Tudo isto é apenas parte das potencialidade que o ImageMagick nos oferece, usa e abusa.


Fonte: Polishlinux

3 comentários:

Speech recognition?!

http://youtube.com/watch?v=IkeC7HpsHxo&mode=related&search=

Epá liedson é que não :P

Obrigado por suas dicas que, pelo menos para mim, foram muito importantes!

Grande abraço.