Faça uma nova amostra da imagem para o tamanho em pixels com ImageMagick

O redimensionamento para um tamanho máximo em pixels pode ser complicado. Eu costumava fazer isso com uma planilha ou uma calculadora, então descobri a maravilha do ImageMagick!

Ao passar 2 argumentos deste script bash (caminho para o diretório e tamanho em pixels):

my_image_resizer.sh path/to/directory 1900000

Você pode reamostrar um diretório inteiro de imagens em nenhum momento!

#!/bin/bash

dir
=$1
let max=$2 # target size in pixels

cd $dir


for file in `ls $dir`
do

echo
"Looking at '$file'"

geometry
=`identify '$file' | awk '{print $3}'`
width
=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $1}'`
height
=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $2}'`

let pix=$width*$height

if [ $pix -gt $max ]; then

echo
"Resizing '$file'"
mogrify
"$file" -sample @$max "$file"

fi

done