sexta-feira, 18 de julho de 2008

Editando imagem com Shell

//Um post de verdade agora =]

Pode soar estranho, mas o Shell possui ferramentas de edição de imagens também.
Não é como usar o GIMP, afinal a edição é na linha de comando. Mas ajuda em muito para edições simples e repetitivas.
Imagine-se tendo que inverter as cores, ou alterar a resolução de uma imagem.
Simples: abre o GIMP e altera. Tudo certo.
Mas e se essa quantia for de 500 imagens, vai realmente abrir as 500 com o GIMP e editar uma a uma oO, quanto tempo hein? e dale paciência =]

Pois bem, com o pacote imagemagick alguns truque podem ser feitos poupando um bom tempo que seria desperdiçado em sua vida x]

Resolvendo as dependências: Basta instalar o pacote imagemagick
Quem usa Debian / Ubuntu e afins:
aptitude install imagemagick

Este pacote nos fornece diversas ferramentas, não entrarei em detalhes pois é só uma apresentação, em todo o caso use o manual =)
Dentre as ferramentas básicas temos a indentify
identify

que nos fornece dados da imagem, como diretório, qualidade (jpg, png, gif..), resolução.
A mais usada creio que seja a ferramenta convert. É nela que fica o trabalho de "brincar" com a imagem sem nem olhar para a imagem em questão. Como seus recursos são muitos, para aplicações específicas leia o manual: man convert.
Coisas simples como alterar a qualidade, passando de jpg para gif, por exemplo, bastaria:
convert [imagem origem].jpg [imagem destino].gif

Mas o interessante dessa brincadeira toda é combinar essas ferramentas ao shell.
Munido das estruturas do ShellScript podemos fazer serviços redundantes, como foi meu caso para diminuir a resolução de mais de 200 fotos para poupar espaço.
Um exemplo: supondo que tenha um diretório com somente imagens em alta resolução e queira diminuir todas p uma resolução mais fraca como 640 x 480 (VGA, ideal pra web), basta usar algo como:
#!/bin/bash
mkdir ../reduzidas/
qt=$(ls -l)
for i in $(seq 2 $qt)
do
imagem=
$(ls -l | sed -n ${i}p | cut -d' ' -f8-)
convert - size 640x480 "$imagem" "../reduzidas/$imagem"
done

Onde neste caso seria criado o diretório ../reduzidas com uma cópia em baixa resolução de todas as imagens.
#:EOF
:

Nenhum comentário: