Isso deve funcionar com todos os tipos de imagens que o ImageMagick pode manipular sem precisar especificar *.png
, *.jpg
, *.jpeg
etc:
#!/bin/bash
images=$(identify -format '%f\n' * 2>/dev/null)
IFS=$'\n'
set -e
max_dims=$(
identify -format '%w %h\n' $images 2>/dev/null |
awk '($1>w){w=$1} ($2>h){h=$2} END{print w"x"h}'
)
orig_dir=originals_$(date +%Y-%m-%d_%T)
mkdir "$orig_dir"
mv -- $images "$orig_dir"
cd "$orig_dir"
set +e
for image in $images; do
convert -- "$image" -gravity Center -extent "$max_dims" "../$image"
done
Isso moverá as imagens originais para um diretório datado, caso os resultados não sejam desejáveis. Além disso, isso falhará se, por qualquer motivo, os arquivos de imagem tiverem novas linhas em seus nomes.
Este script poderia fazer com mais algumas mensagens de erro para dar uma indicação útil se algo desse errado. Mas, por enquanto, se houver algum erro ao mover as imagens (tudo entre o set -e
e set +e
), o script será encerrado. Espero que isso evite causar danos irreversíveis.
Atualizar
Agora, com o script awk
plagiado da resposta @ terdon .