O ImageMagick é uma poderosa ferramenta em modo texto para tratar imagens em suas diversas formas: converter, redimensionar, criar, editar, cortar, juntar, editar cores e mais um bilhão de funcionalidades. De vez em quando eu me deparo com algumas necessidades bem específicas, como por exemplo: redimensionar todas as fotos que eu tirei dos bêbados da noite passada, pra eu por em algum lugar sem ter que precisar dar upload de 3MB por foto. Este tutorial se torna então uma referência para algumas das tarefas que podemos fazer com imagens usando o ImageMagick. E além disso, vou sempre tentar expandir o conteúdo quando for surgindo mais tarefas, assim como eu faço na página de Comandos Linux.
Para instalar no Debian, Ubuntu e similares, use o APT com o comando apt-get com o root ou o sudo
Ou faça o download no endereço para outras distros, caso não haja nos repositórios da mesma pelo gerenciador de pacotes correspondentes.
Você pode pegar uma versão em código-fonte e compilar manualmente, o que é um pouco mais demorado de se instalar. Se você usa Windows, baixe diretamente a versão instalável (binária) para Windows. Mesma coisa para o caso do MacOS X.
Se você usa Linux, então o ImageMagick provavelmente já está incluso em sua distribuição. Neste caso, o nome do pacote é geralmente imagemagick (Debian-like) e ImageMagick (RH-Like). Geralmente os comandos da ferramenta vão parar no /usr/bin.
Os seguintes comandos do ImageMagick estão disponíveis:
Apesar dos vários comandos disponíveis, o que mais usaremos aqui é o convert.
De JPEG para PNG:
imagem.jpg JPEG 256x256 256x256+0+0 DirectClass 8-bit 6.33594kb
imagem.jpg[1] PNG 256x256 256x256+0+0 DirectClass 8-bit 23.2344kb
(O comando identify foi só para mostrar os tipos de imagem.) Note também que ele não sobrescreve o arquivo anterior, e sim cria um novo. Qualquer operação que iria sobrescrever o arquivo original tem que ser executada com o comando mogrify ao invés do convert. A não ser que você tenha uma razão bem específica, eu não recomendo fazer isto
De PNG para GIF:
(Esteja ciente de que às vezes o GIF fica com pior qualidade que o PNG) Ou seja, basta especificar sua extensão que o convert faz a conversão para o formato adequado.
Reduzindo uma imagem para a metade do seu tamanho:
Redimensiona a imagem.jpg pela metade e salva no arquivo metade_da_imagem.jpg. O 50%, obviamente, pode ser substituído por outra porcentagem para diminuir/aumentar a imagem no aspecto relativo correto.
Reduzindo para um tamanho específico:
Redimensiona a foto.jpg para 800×600 (aumenta ou diminui) e salva em destino.jpg.
Redimensionando todas as imagens de um diretório:O convert aceita os coringas (wildcards) da shell, ou seja, o asterisco (*) pode representar tudo:
Ele vai converter todos os arquivos que terminam com .jpg do diretório atual e o resultado ele salva em outros arquivos com terminação -0, -1, -2, etc. Pode ficar um pouco confuso essa nomeclatura no final das contas.
Então neste caso, é melhor a gente usar o comando mogrify com a opção -path, assim:
Todos os arquivos que terminam com .jpg do diretório atual serão redimensionados para 50% de seu tamanho e armazenados com o mesmo nome no diretório resultado. Uso isto bastante para reduzir as imagens que baixo de cameras digitais de alta qualidade. Não se esqueça do -path! Se você se esquecer, as imagens originais serão perdidas!
Outro jeito de fazer o mesmo, agora utilizando o convert e shell-script:
Mexendo na qualidadeEm alguns formatos como o .jpg, é possível mexer na qualidade da imagem, que impacta também no tamanho da mesma. Exemplo:
Converte a qualidade da imagem.jpg para 80%.
É possível rotacionar as imagens automaticamente, com o angulo desejado. Por exemplo, vamos rotacionar nos angulos 90, 180 e 270 graus, que correspondem a “deitar a imagem” e a virá-la de cabeça pra baixo:
Quando queremos criar uma galeria de imagens em uma página, é legal criar thumbnails (miniaturas) destas imagens, para o usuário pré-visualizar, clicar e ver o tamanho real. É uma boa visão geral de todas as imagens e ainda economiza espaço e banda na hora de visualizar.
A melhor forma de se criar thumbnails, é utilizar a opção -thumbnail ao invés do -resize. Eles fazem praticamente a mesma coisa, mas a opção -thumbnail também remove informações dentro da imagem que não são úteis em thumbnails.
Todas as imagens com extensão .jpg serão redimensionadas para 100×150 pixels e jogadas em um diretório chamado thumbnails, com o mesmo nome. Mais uma vez, não se esqueça da opção -path ou você pode perder todas as imagens originais.
Agora gerando thumbnails com apenas a largura fixa, isso significa que a altura pode variar de acordo com a foto.
Se você está fazendo isso com fotos que vem de cameras digitais, dentro da imagem geralmente tem uma informação se a imagem deve ser rotacionada caso você tenha tirado a foto com a câmera em pé. Neste caso, a opção -auto-orient se torna bastante útil pois rotaciona pra você:
Um último exemplo de geração de thumbnail, que peguei na documentação do ImageMagick, é criar uma “borda” no estilo foto polaroid:
Também tem outras ténicas bem interessantes:
Estes efeitos também podem ser aplicados não apenas para os thumbnails, mas para as imagens originais também. Basta remover o -thumbnail.
Diversos exemplos a mais de como criar thumbnails, você encontra na página oficial:
http://www.imagemagick.org/Usage/thumbnails/
Além de todos estes comandos e ações que o ImageMagick proporciona, ele também pode ser aplicado diretamente em outros programas, em diversas linguagens de programação, através de sua API. No momento que eu escrevo este tutorial, a API está disponível para as seguintes linguagens/métodos/toolkits: Ada, C, Ch, COM+, C++, Java, LabVIEW, Lisp, Neko, .NET, Pascal, Perl, PHP, Python, Ruby, Tcl/TK, XML-RPC.
http://www.imagemagick.org/script/api.php
Grande parte deste artigo foi aprendido (além das páginas de manual) através da página oficial de documentação do ImageMagick, que é muito, muito, muito completa. O endereço é:
http://www.imagemagick.org/Usage/
Via: Devin