I’m currently working on migrating a large publishing website form Drupal to WordPress and one of the things that occurred to me was that WordPress generates 3 sizes for each image that’s uploaded into Media Library. However, our Drupal website only contains a single image. To make the media library work nicely in WordPress we’ve decided to resize thousands of images in Drupal to 3 different sizes ready to be consumed by WordPress. The tool I’ve picked is ImageMagic. A wonderful command line image resizing tool that allows you to batch resize photos relatively quickly.
If you are using OS X, you can install image magic by running
brew install imagemagick
or on linux
apt-get install imagemagick
Now you’re ready to batch resize photos. The script below will batch resize photos and group them into 3 directories – small, medium, large. You will need to create small, medium, large directories yourself if you are going to use this script as is.
#!/bin/bash
smallwidth=100
smallheight=100
mediumwidth=300
mediumheight=300
largewidth=1024
largeheight=1024
rm -rf small/*
rm -rf medium/*
rm -rf large/*
for file in *
do
imagewidth=$(identify -format "%w" "${file}")
imageheight=$(identify -format "%h" "${file}")
if [ $imagewidth -ge $imageheight ]
then
mogrify -path small/ -resize $smallwidth "${file}"
mogrify -path medium/ -resize $mediumwidth "${file}"
mogrify -path large/ -resize $largewidth "${file}"
else
mogrify -path small/ -resize x$smallheight "${file}"
mogrify -path medium/ -resize x$mediumheight "${file}"
mogrify -path large/ -resize x$largeheight "${file}"
fi
done
cd small
for file in *
do
mv "${file}" "${file%.*}-${smallwidth}x${smallheight}.${file##*.}" 2>/dev/null
done
cd ..
cd medium
for file in *
do
mv "${file}" "${file%.*}-${mediumwidth}x${mediumheight}.${file##*.}" 2>/dev/null
done
cd ..
cd large
for file in *
do
mv "${file}" "${file%.*}-${largewidth}x${largeheight}.${file##*.}" 2>/dev/null
done
Feel free to use this and modify to your needs. You could further improve this by uploading all images to S3 after you’ve resized them all. You can use this excellent command line S3 client to do that.
Marko