Editando imagens com o ImageMagick
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:
- As páginas teriam um alto tempo de carregamento
- 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.
Inscreva-se na newsletter
Quer receber as últimas atualizações do blog, saber antes quais são os próximos posts e acompanhar o andamento da lista de leitura 2021? Então te inscreve na minha newsletter!
O envio é quinzenal e gratuito.