Editando imagens na linha de comando
Então galera, vez ou outra seja por alguma documentação ou outra coisa eu preciso manipular uma série de imagens, é complicado você abrir o GIMP uma por uma e fazer o que você quer, para evitar esse trabalho todo eu costumo usar um comando do pacote ImageMagick chamado ‘convert’. O convert é um canivete suíço na manipulação de imagens via linha de comando, aqui eu vou mostrar apenas algumas operações como: redimensionar, recortar e converter imagens.
Então vamos fazer um caso de uso básico, suponha que você tenha 50 imagens e precise editar cada uma delas, você vai fazer via console com dois ou três comandos ou editar um a um os cinquenta arquivos!? Eu tenho mais o que fazer, então vamos lá!
mulatinho@forrest:~$ ls
gtkfingerprint-01.png gtkfingerprint-10.png gtkfingerprint-19.png gtkfingerprint-28.png gtkfingerprint-37.png gtkfingerprint-46.png
gtkfingerprint-02.png gtkfingerprint-11.png gtkfingerprint-20.png gtkfingerprint-29.png gtkfingerprint-38.png gtkfingerprint-47.png
gtkfingerprint-03.png gtkfingerprint-12.png gtkfingerprint-21.png gtkfingerprint-30.png gtkfingerprint-39.png gtkfingerprint-48.png
gtkfingerprint-04.png gtkfingerprint-13.png gtkfingerprint-22.png gtkfingerprint-31.png gtkfingerprint-40.png gtkfingerprint-49.png
gtkfingerprint-05.png gtkfingerprint-14.png gtkfingerprint-23.png gtkfingerprint-32.png gtkfingerprint-41.png gtkfingerprint-50.png
gtkfingerprint-07.png gtkfingerprint-16.png gtkfingerprint-25.png gtkfingerprint-34.png gtkfingerprint-43.png
gtkfingerprint-08.png gtkfingerprint-17.png gtkfingerprint-26.png gtkfingerprint-35.png gtkfingerprint-44.png
gtkfingerprint-09.png gtkfingerprint-18.png gtkfingerprint-27.png gtkfingerprint-36.png gtkfingerprint-45.png
Lição 1: Recortando imagens
mulatinho@forrest:~$ convert gtkfingerprint-01.png -crop 800x600+150x300 gtkfingerprint-01_cut.png
(recorte básico da imagem pegando apenas o quadro que desejamos.)
mulatinho@forrest:~$ for i in `ls gtkfingerprint-*png`; do
convert $i -crop 800x600+150x300 `echo $i | sed -e 's/.png/_cut.png/'`; done
(recortando todas as imagens na mesma posição e do mesmo tamanho com um pouquinho de shellscript)
Abaixo podemos ver o resultado da saída de todas as imagens recortadas.
mulatinho@forrest:~$ ls *cut*png
gtkfingerprint-01_cut.png gtkfingerprint-11_cut.png gtkfingerprint-21_cut.png gtkfingerprint-31_cut.png gtkfingerprint-41_cut.png
gtkfingerprint-02_cut.png gtkfingerprint-12_cut.png gtkfingerprint-22_cut.png gtkfingerprint-32_cut.png gtkfingerprint-42_cut.png
.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
gtkfingerprint-10_cut.png gtkfingerprint-20_cut.png gtkfingerprint-30_cut.png gtkfingerprint-40_cut.png gtkfingerprint-50_cut.png
Lição 2: Redimensionando imagens
Muitas vezes também precisamos redimensionar imagens, neste caso eu precisei de imagens com 75% do tamanho (que eu criei com sufixo ‘_med.png’) para colocar dentro de umas tabelas num documento LaTeX afim de descrever o funcionamento da ferramenta e também precisei de thumbnail’s com cerca de 50% do tamanho original (que eu criei com o sufixo ‘_min.png’) das imagens para mostrar em um website. Ficou assim:
mulatinho@forrest:~$ convert gtkfingerprint-01_cut.png -resize 75% gtkfingerprint-01_med.png
(redimensionando apenas uma imagem em torno de 75%)
mulatinho@forrest:~$ for i in `ls *cut.png`; do
convert $i -resize 75% `echo $i | sed -e 's/_cut.png/_med.png/'`; done
(novamente fazendo o mesmo com todas as imagens, redimensionando-as com apenas um comando)
mulatinho@forrest:~$ for i in `ls *cut.png`; do
convert $i -resize 50% `echo $i | sed -e 's/_cut.png/_min.png/'`; done
(e redimensionando todas as imagens com 50% do tamanho adicionando o sufixo 'min')
As vezes temos situações em que uma imagem está numa qualidade muito grande, isso acontece com as fotos dos celulares mais modernos hoje em dia, e aí fica difícil da gente enviar pros nosso amigos e familiares um álbum cheio de imagens imensas por e-mail ou numa rede social, para facilitar isso a gente geralmente reduz a qualidade da imagem ou até mesmo a redimensiona como vimos acima.
Lição 3: Convertendo imagens
Existem vezes em que simplesmente desejamos converter um formato de imagem, isso também é muito fácil de fazer com o convert que suporta vários formatos como: JPEG, GIF, PNG, BMP, etc. Vejamos alguns exemplos de conversão de imagens:
mulatinho@forrest:~$ convert gtkfingerprint-01_cut.png gtkfingerprint-01_cut.bmp
(converte a imagem para o formato BMP, pior compressão, windows suqz)
mulatinho@forrest:~$ convert gtkfingerprint-01_cut.png gtkfingerprint-01_cut.gif
(converte a imagem para o formato GIF, ótima compressão)
mulatinho@forrest:~$ convert gtkfingerprint-01_cut.png gtkfingerprint-01_cut.jpg
(converte a imagem para o formato JPG, compressão legal)
mulatinho@forrest:~$ ls -l gtkfingerprint-01_cut.*
-rw-r--r-- 1 mulatinho mulatinho 673338 Feb 7 21:49 gtkfingerprint-01_cut.bmp
-rw-r--r-- 1 mulatinho mulatinho 25005 Feb 7 21:46 gtkfingerprint-01_cut.gif
-rw-r--r-- 1 mulatinho mulatinho 42447 Feb 7 21:50 gtkfingerprint-01_cut.jpg
-rw-r--r-- 1 mulatinho mulatinho 30433 Feb 7 21:19 gtkfingerprint-01_cut.png
mulatinho@forrest:~$ file -bi gtkfingerprint-01_cut.*
application/octet-stream; charset=binary
image/gif; charset=binary
image/jpeg; charset=binary
image/png; charset=binary
Links com alguns extras.
Bom, essa é a dica do mulato da semana rapaziada! Espero que aproveitem! ;)