/ DICAS

Editando imagens com o ImageMagick

Foto de Kathryn Aleksa, via Unsplash

Sempre que eu vou publicar algum post eu busco por imagens de capa. O problema é que eu não posso ir no Unsplash e simplesmente baixar as imagens para usar no blog, senão a cada visita existiriam dois problemas:

  1. As páginas teriam um alto tempo de carregamento
  2. A cada visita feita na rede móvel o pacote de dados seria drenado

Para evitar estas situações, eu sempre edito a imagem: converto para uma escala de cinza, redimensiono e reduzo a qualidade. Assim, o tamanho da imagem reduz consideravelmente, mas sigo mantendo um bom nível de qualidade. Eu estava usando 3 sites para essas tarefas: BeFunky, convertimage e compressjpeg. Todos me atendem perfeitamente, mas quando é necessário editar mais de 3 imagens por vez, confesso que perco a paciência.

Para evoluir esse meu MVP, fiz um script (edit-img.sh) utilizando o ImageMagick:

ImageMagick: software gratuito para edição de imagens. Permite converter o formato da imagem, além de redimensionar, cortar, girar e diversas outras opções.

#!/bin/bash

FILES=C:/user/blog/imagens/*

if [ -z $1 ]
then
    for file in $FILES*.jpg
    do
    echo "Processing $file file..."
    
    magick $file -resize "1400" -grayscale Rec709Luma ${file%.*}-edited.jpg

    done
else
    echo "Processing $1 file..."

    magick $1 -resize "1400" -grayscale Rec709Luma ${1%.*}-edited.jpg
fi

Esse script faz o seguinte:

  • Se o script for executado sem nenhum parâmetro de entrada, então roda o comando magick para todos os arquivos com a extensão JPG da pasta
  • Senão, roda o comando magick para a imagem inserida como parâmetro

Assim, posso executar o script com os seguintes comandos no Windows:

  • .\edit-img.sh

  • .\edit-img.sh NOME_DA_IMAGEM.jpg

magick $1 -resize "1400" -grayscale Rec709Luma ${1%.*}-edited.jpg

O comando magick é bem simples e montei ele baseado na documentação:

  • magick: comando para executar o ImageMagick
  • $1: parâmetro de entrada com a imagem a ser manipulada
  • -resize “1400”: redimensiona a imagem de acordo com as dimensões informadas. Como redimensiono a imagem com base na largura, a documentação informa que ao passar somente um valor, ele é considerado como largura
  • -grayscale Rec709Luma: converte a imagem para uma escala de cinza. O parâmetro Rec709Luma indica que é uma conversão não linear. Escolhi essa por ser indicada pela própria documentação como a escolha em caso de dúvida
  • ${1%.*}-edited.jpg: parâmetro com o nome da imagem convertida. O formato que utilizei apenas adiciona o sufixo “-edited” ao final do nome da imagem

Resumindo, o ImageMagick vai redimensionar a imagem para uma largura de 1400px, de forma proporcional, e converter para uma escala de cinza, gerando um novo arquivo de imagem com o sufixo “-edited”.

Pretendo seguir olhando a documentação para ver quais opções de compressão de imagens me atendem e facilitar a organização das postagens no blog. Mas só esse script inicial já facilitou muito a minha vida.

O ImageMagick está disponível para Windows e Linux e possui uma opção de uso com interface gráfica, além da linha de comando.



ingridmachado

Ingrid Machado

Engenheira de computação, especialista em engenharia de software.
Autora deste querido blog.

Mais posts