12 Nov 2020 | 2 minutos • Dicas e recomendações
Editando imagens com o ImageMagick
Usando um script bash

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

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 link do post foi copiado com sucesso!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.
Mais conteúdos de Ingrid Machado

27 Fev 2023 • Dicas e recomendações
Vantagens do Kindle
Demorei um bom tempo para me render ao Kindle quando conheci ele. Principalmente, porque fazia parte do grupo que valoriza a experiência do livro: tirar da embalagem, sentir o cheio de novo impregn...
4 minutos

01 Jul 2022 • Dicas e recomendações
Curso Leadership Communication da FIAP
Com tanto material gratuito na internet, fica difícil filtrar o que realmente vale a pena do que é mais do mesmo. Eu mesma sofro com isso e abandono muitas coisas pela metade. Mas hoje quero falar ...
2 minutos

29 Abr 2022 • Dicas e recomendações
Cabeceira
Quando estou numa época boa para ler diariamente e manter o ritmo, costumo ler muitos livros ao mesmo tempo. Mesmo tendo retomado a leitura com dois livros por vez, as vezes tem tanta recomendação ...
2 minutos