Resample Image to Size in Pixels With ImageMagick
Resizing to a maximum size in pixels can be tricky. I used to do this with a spreadsheet or a calculator, then I discovered the wonder of ImageMagick!
By passing this bash script 2 arguments (path to directory and size in pixels):
my_image_resizer.sh path/to/directory 1900000
You can resample an entire directory of images in no time!
#!/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
Written by Andrew Bigger
Related protips
2 Responses
You could use the -format option on identify to simplify getting the width and height.
Identify -format "%w %h" '$file'
over 1 year ago
·
I just went through this recently. Check it out:
for file in /path/to/files/*/*.jpg; do sudo convert $file -resize '480000@>' -density 72 $file; done
480000 = 800*600 so all images will have the same image area without killing files that are 1200x200 or something ridiculous like that.
over 1 year ago
·
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Resize
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#