Trabalhando com imagens: Gimp, Imagemagick e outros

Publicado: 07/09/2015 em Escritorio, Linux, Multimidia
Tags:,

1. Introdução
O Gimp é uma ferramenta muito poderosa para manipulação de imagens, se constituindo em um editor de figuras avançado. Pode-se utilizar o Gimp para editar, melhorar e retocar fotos e scans, criar desenhos e possibilitar ao usuário fazer suas próprias imagens. Ele tem uma grande coleção de ferramentas de edição e filtros com qualidade profissional, similares às encontradas no Photoshop. Vários ajustes finos e funcionalidades como camadas, caminhos, máscaras e scripts dão ao usuário total controle sobre suas imagens.

Muitos formatos de arquivos de imagens são suportados, incluindo JPEG, Photoshop (.psd) e Paint Shop Pro (.psp). Pode também ser usado para escanear e imprimir fotos.

Neste post vamos exemplificar alguns usos do Gimp.

2. Gimp: juntar figuras lado a lado
Imagine que se deseja construir uma única figura a partir de quatro figuras isoladas, alcançando o seguinte resultado:

Imagens lado a lado

Passo 1: preparar as figuras
Uma a uma, deixe as figuras no tamanho desejado. Neste caso exemplificado, deixamos as quatro figuras no tamanho 120 x 120px.

Passo 2: crie uma imagem vazia
Criar uma nova imagem vazia utilizando o menu principal do Gimp. No nosso caso, a imagem deve reservar um espaço para receber as 4 figuras de 120 x 120px. Ou seja, faremos a criação de uma imagem vazia de 480 x 120px, como é mostrado abaixo:

Criar nova imagem

Passo 3: inserir as figuras
Utilizar novamente o menu principal do GIMP, através da opção “Arquivos -> Abrir como camadas”. Selecionar a seguir as figuras que serão inseridas (pode-se selecionar todas as figuras simultaneamente através de “Ctrl + click do mouse” sobre o nome de cada arquivo).

Abrir como camadas

Passo 4: arrastar as figuras
Agora através da ferramenta de movimento M presente na “Caixa de Ferramentas” do Gimp, arraste as figuras inseridas para suas posições definitivas de forma a obter a diagramação desejada. Primeiro deve-se selecionar a ferramenta de Movimento, para então poder arrastar com o mouse cada figura para a posição desejada.

Ferramenta de movimento

Passo 5: transparência na camada de fundo
Adicionalmente, se desejado, coloque transparência na camada de fundo. Para isto utilize a “Caixa de Camadas” do Gimp, selecione a camada de fundo, e através da barra de Opacidade deixe seu valor como 0.
OBS: o “diálogo de camadas” do Gimp é obtido através do hot key “Ctrl + L”, ou diretamente através do menu principal em “Janelas -> Diálogos de encaixe -> Camadas”.

Transparência de camada

3. Converter imagens coloridas em imagens preto e branco (tons de cinza)

Uma boa explicação pode ser encontrada em http://is.gd/YeINwY.

a) Maneira 1
Através de comando de escala de cinza: Imagem –> Modo –> Escala de Cinza
Essa função transforma a imagem colorida de três canais (vermelho, azul e verde) de 24-bits em uma imagem preto e branco de um canal 8-bits.

b) Maneira 2
Através do comando de redução da saturação:  Cores –> Dessaturar
Aplicando a diminuição da saturação a imagem continua no sistema RGB (três canais), mas os canais ficam com valores idênticos, o que gera o efeito de preto e branco. Essa opção normalmente gera imagens mais escuras.

c) Maneira 3
Através do comando de composição de cores: Filtros –> Cores –> Decompor
Em decompor escolher HSV (hue saturation value). Essa função decompõe a imagem original em três novas imagens preto e branco, cada uma de 8-bits, representando matiz, saturação e valores componentes da imagem.

4. Outros filtros interessantes do Gimp
a) Explosão de Linhas
Filtros –> Renderizar –> Explosão de Linhas
Numa figura com uma tela de pintura de tamanho 1600 x 1200 os parâmetros abaixo gera uma bonita tela:
Número de linhas: 120
ângulo das pontas: 0,8
raio de deslocamento: 450
fator aleatório: 30
Para maiores detalhes: http://docs.gimp.org/2.9/pt_BR/script-fu-line-nova.html

b) Ilustração
A camada ativa ou a seleção fica parecendo um desenho em quadrinhos.
Filtros –> Artísticos –> Ilustração
Para maiores detalhes: http://docs.gimp.org/2.9/pt_BR/plug-in-cartoon.html

c) Fotocópia
O filtro fotocópia aplicado modifica a camada ativa ou seleção para que ela se pareça com uma fotocópia em preto e branco.
Filtros –> Artísticos –> Fotocópia
Para maiores detalhes: http://docs.gimp.org/2.9/pt_BR/plug-in-photocopy.html

d) Quebra-cabeça
Este filtro irá transformar a imagem em um quebra-cabeça.
Filtro –> Renderizar –> Padrão –> Quebra-cabeça
Para maiores detalhes: http://docs.gimp.org/2.9/pt_BR/plug-in-jigsaw.html

e) Grade
Este filtro cria uma grade cartesiana na camada ativa.
Filtros –> Renderizar –> Padrão –> Grade.
Para maiores detalhes: http://docs.gimp.org/2.9/pt_BR/plug-in-grid.html

f) Persianas
Filtros –> Distorções –> Persianas
Gera um efeito que simula uma janela com persianas em frente da imagem, com barras horizontais ou verticais.
Para maiores detalhes: http://docs.gimp.org/2.9/pt_BR/plug-in-blinds.html

g) Esculpir
Filtros –> Distorções –> Esculpir
Esse filtro estampa e talha a camada ou seleção ativas, dando à imagem partes altas e partes baixas. Áreas mais claras são colocadas em alto relevo, e áreas escuras deixadas como se estivessem afundadas.
Para maiores detalhes: http://docs.gimp.org/2.9/pt_BR/plug-in-emboss.html

5. Redefinir o tamanho da tela de pintura
Uma boa explicação pode ser encontrada em http://docs.gimp.org/2.9/pt_BR/gimp-image-resize.html

A “tela de pintura” é a área visível da imagem. O comando Tamanho da tela de pintura permite que você aumente ou diminua esse tamanho:

Imagem –> Tamanho da tela de pintura

6. Imagemagick
Instalar o Imagemagick:
# apt-get install imagemagick

Entrar na pasta que contém as imagens e criar uma pasta para colocar as imagens que serão produzidas, que neste post chamaremos esta pasta de “output”, e seguir os exemplos abaixo (alterando os parâmetros de acordo com suas preferências). O formato básico do comando que estaremos usando nos exemplos é o seguinte (válido quando o exemplo se referir a comando em lote):
$ find . -maxdepth 1 -iname "*.JPG" | xargs -l -i convert - {} ./output/{}

Onde se tem:

  • find . -maxdepth 1 -iname “*.JPG”: este comando lista as imagens com extensão JPG apenas do diretório atual, sem entrar nos subdiretórios (-maxdepth 1).
  • xargs -l -i executa o comando convert fornecendo os nomes de arquivo que o comando find encontrou (o “-l” determina que se processe uma linha de cada vez; o “-i” faz com que as “{}” representem um nome de arquivo).
  • convert é o comando da imagemagick para conversão de formatos.
  • ./output/: diretório onde serão salvas as imagens reduzidas.

6.1 Reduzir tamanho de imagens em lote.

Exemplo 1:
$ find . -maxdepth 1 -iname "*.JPG" | xargs -l -i convert -resize 1000x563 -quality 50% {} ./output/{}
Onde:

  • -resize 1000×563: dimensões que o arquivo ficará após o redimensionamento.
  • -quality 50%: qualidade do arquivo jpg final após ser convertido (obs: aplicável apenas para arquivos JPG; O parâmetro pode ir de 0% a 100%).

Exemplo 2:
$ mogrify -resize 300 *.jpg
O comando acima redimensiona todas as imagens jpg da pasta atual para a largura 300. A altura será reduzida proporcionalmente. Os arquivos gerados substituirão os originais.

Exemplo 3:
$ find . -maxdepth 1 -iname "*.jpg" | xargs -l -i convert -resize 300 {} ./output/{}
O comando acima redimensiona todas as imagens jpg da pasta atual para a largura 300. A altura será reduzida proporcionalmente. Os arquivos gerados serão disponibilizados na pasta “output”, abaixo da pasta atual.

6.2 Reduzir a qualidade das imagens
$ for file in *.JPG; do convert "$file" -quality 40% "$file"; done;
Nesse caso, o script converte todos os arquivos JPG (é “case sensitive”) do diretório corrente para 40% da qualidade original.

6.3 Colocar bordas em imagens através de comando de lote.
$ find . -maxdepth 1 -iname "*.JPG" | xargs -l -i convert -bordercolor "#c4c4c4" -border 1%x3% {} ./output/{}
$ find . -maxdepth 1 -iname "*.JPG" | xargs -l -i convert -bordercolor "#c4c4c4" -border 15x15 {} ./output/{}

6.4 Transformar imagens para escala de cinza, através de comando de lote.
$ find . -maxdepth 1 -iname "*.JPG" | xargs -l -i convert -type Grayscale {} ./output/{}

6.5 Virar imagens, através de comando de lote.
$ find . -maxdepth 1 -iname "*.JPG" | xargs -l -i convert -flip {} ./output/{} (verticalmente)
$ find . -maxdepth 1 -iname "*.JPG" | xargs -l -i convert -flop {} ./output/{} (horizontalmente)

6.6 Rotacionar imagens, através de comando de lote.
$ find . -maxdepth 1 -iname "*.JPG" | xargs -l -i convert -rotate 90 {} ./output/{}
Nesse caso, rotacionou as imagens 90 graus (sentido horário).

6.7 Concatenar imagens
Para obter um melhor controle sobre o layout, melhor usar a ferramenta “montage”. “montage” vai colar as imagens de entrada juntas e “-tile” controla o layout a ser aplicado.

A opção “tile”, quando utilizado, segue o formato <colunas>x<linhas>, mas ambos os lados podem estar faltando e a montagem automaticamente vai procurar satisfazer as restrições. O formato “-tile 1x” significa exatamente uma coluna com qualquer número de linhas, enquanto “-tile x1” significa qualquer número de colunas em uma linha. Se desejar um help do comando “montage”, basta fazer:
$ montage -h | less

Veja os diversos exemplos:

$ montage -geometry +2+10 SAM_051[0-3].JPG output/concatenadas1.jpg
$ montage -geometry +2+10 -tile x1 SAM_051[0-3].JPG output/concatenadas2.jpg
$ montage -geometry +2+10 -tile x1 -background none SAM_051[0-3].JPG output/concatenadas3.jpg

No primeiro exemplo acima, está se concatenando 4 imagens (que ficarão na forma de uma matriz de 2 linhas por 2 colunas), com uma margem de 2 pixels de cada lado de cada figura ( margem esquerda e margem direita de cada figura), e de 10 pixels de margem acima e abaixo de cada figura. O tamanho de cada imagem não sofre alteração. No segundo exemplo acima, teremos as 4 imagens concatenada em 1 linha (uma imagem ao lado da outra). Já no terceiro exemplo acrescentamos a opção “-background none”, que pode ser interessante especialmente quando para uso em web pages.

$ montage -geometry 220x110+2+15 SAM_051[0-3].JPG output/concatenadas4.jpg
Nesse exemplo, além das margens conforme explicado exemplo anterior, está-se reduzindo cada imagem ao tamanho de 220x110px.

$ montage -geometry 220x110\>+2+15 SAM_051[0-3].JPG output/concatenadas5.jpg
O mesmo que o exemplo anterior, só que apenas está se alterando o tamanho daquelas imagens que forem maiores que 220x110px.

$ montage -geometry +5+10 -tile x1 -frame 20 SAM_051[0-3].JPG output/concatenadas6.jpg
$ montage -geometry +5+10 -tile x1 -frame 20 -mattecolor SkyBlue SAM_051[0-3].JPG output/concatenadas7.jpg
$ montage -geometry +5+10 -tile x1 -frame 20 -mattecolor SkyBlue -background transparent SAM_051[0-3].JPG output/concatenadas8.jpg

Está se concatenando 4 imagens (que ficarão horizontalmente em 1 linha – uma imagem ao lado da outra), com cada imagem dentro de uma moldura de largura de 20px, e com uma margem de 5 pixels de cada lado de cada figura ( margem esquerda e margem direita de cada figura), e de 10 pixels de margem acima e abaixo de cada figura. O tamanho de cada imagem não sofre alteração. A opção “-mattecolor” define a cor da margem. A opção “-background transparent” pode ser interessante especialmente quando para uso em web pages.

$ montage -geometry +5+10 -tile x1 -border 20 SAM_051[0-3].JPG output/concatenadas9.jpg
$ montage -geometry +5+10 -tile x1 -border 20 -bordercolor SkyBlue SAM_051[0-3].JPG output/concatenadas10.jpg

Insere uma borda de decoração. Adiciona um ‘padding’ extra em torno de cada imagem, após ela ser redimensionada conforme definido através de “-geometry”. A opção “-bordercolor” define a cor da borda. Obs: a decoração “-border” não funciona concomitantemente com a decoração “-frame”.

$ montage -mode concatenate -tile x1 imagem1.JPG imagem2.JPG output/concatenadas1.jpg
$ montage -mode concatenate -tile x1 SAM_051[0-3].JPG output/concatenadas2.jpg
$ montage -mode concatenate -tile 1x imagem1.JPG imagem2.JPG output/concatenadas3.jpg
$ montage -mode concatenate -tile 2x2 SAM_051[0-3].JPG output/concatenadas4.jpg
No primeiro e segundo exemplos concatena horizontalmente em 1 linha (uma imagem ao lado da outra); no terceiro exemplo concatena verticalmente 1 coluna (uma imagem embaixo da outra); já no quarto exemplo, teremos as 4 imagens concatenadas na forma de uma matriz de 2 linhas por 2 colunas.

Se desejar que cada imagem concatenada esteja circundadas por uma borda (moldura) ornamental:
$ montage -mode concatenate -tile x1 -frame 5 SAM_031[0-3].JPG output/concatenadas5.jpg, onde o numeral 5 representa a espessura da borda.

Se desejar que o conjunto de imagens esteja circundada por uma borda horizontal (em cima e em baixo, mas sem bordas nas verticais):
$ montage -mode concatenate -tile x1 -shadow -geometry +0+10 -background lightblue SAM_051[0-3].JPG output/concatenadas6.jpg

6.8 Gerar um gif animado
$ convert -delay 200 *.JPG output/animado.gif
Converte uma sequencia de imagens em um gif animado com um intervalo entre uma imagem e outra de 200ms.

7. ExifTool
Este aplicativo é bastante útil para visualizar e alterar as meta-informações de imagens.
# apt-get install libimage-exiftool-perl libimage-info-perl

Para visualizar as meta-informações de uma imagem:
$ exiftool myPhoto.jpg

Para remover todas as meta-informações de uma imagem (ou de todos os arquivos .jpg do diretório corrente):
$ exiftool -all= -overwrite_original photo.jpg
$ exiftool -all= -overwrite_original -ext jpg .

Para remover todas as meta-informações de arquivos de imagem .jpg do diretório corrente e subdirs:
$ exiftool -all= -r -overwrite_original -ext jpg .

8. Renomeando vários arquivos simultaneamente
Quando temos arquivos de uma máquina fotográfica digital, o padrão dos nomes dos arquivos nem sempre é interessante. Muitas vezes é desejável um outro padrão, por exemplo do seguinte tipo:

Foto_001.jpg Foto_002.jpg Foto_003.jpg ……

Isso pode ser alcançado com o comando abaixo:

$ cont=1 ; for i in * ; do zeros=$(printf "%03d\n" ${cont}) ; mv $i Foto_${zeros}.jpg ; ((cont++)) ; done

Onde:

“cont”
Variável que recebe um valor numérico que servirá como contador.

“for i in …”
Loop responsável por listar todos os arquivos do diretório corrente e repassá-los um-a-um ao comando ‘mv’.

“mv …”
Comando que além de mover arquivos também pode ser utilizado para renomeá-los.

“Foto_${zeros}.jpg”
Novo nome das fotos, seguido do contador numérico ($cont) e a extensão (.jpg).

“((cont++))”
Construção responsável por incrementar a variável ‘cont’ em um (1), a cada passada do loop.

Referências legais
Manual do usuário:
1- Manual do usuário GIMP
Fundo transparente:
2- Tornando transparente o fundo das imagens
3- 3 Formas DIFERENTES de RECORTAR uma imagem no GIMP
Tamanho da tela da pintura (área de visualização da imagem):
4- Tamanho da tela de pintura
5- ImageMagick Examples: Montage, Arrays of Images
6- Examples of ImageMagick Usage

Anúncios
comentários
  1. Fernandes disse:

    Albuquerque bom dia. Excelente esse material. Mas assim eu precisava tirar parte do espaço da imagem a esquerda você teria alguma sugestão de como eu faria isso com o ImageMagick ?

    Grato desde já.

Deixe um comentário, pois isto é muito motivante para continuarmos este trabalho

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s