Que tal usar o convert
do ImageMagick que tem exatamente essa opção de tamanho mínimo , veja
Geometria da imagem opções?!
Copiar & Colar snippet (sintaxe bash) - por favor, observe o ^
após a especificação do tamanho:
for file in *.jpg; do
echo -n Converting ${file}...
convert -resize 180x180^ "$file" "th_$file"
echo done
done
Além disso, se você quiser cortar o arquivo resultante em uma forma quadrática ao redor do centro, poderá usar esse script. O parâmetro SIZE
na primeira linha especifica (surpresa, surpresa) o tamanho final da miniatura.
SIZE=180
for file in *.jpg; do
echo -n Converting ${file}...
convert -resize ${SIZE}x${SIZE}^ "$file" temp.png
convert -crop $(identify temp.png | awk -F'[ x]' -v SIZE=$SIZE '{ printf "%ux%u+%u+%u", SIZE, SIZE, ($3-SIZE)/2, ($4-SIZE)/2 }') temp.png "th_$file"
echo done
done
rm temp.png
O script não é muito otimizado, pois executa dois comandos ( identify
e convert -crop
) na miniatura. Mas como a miniatura é pequena, acho que a velocidade é razoável.