Batch resizing images using the command line in Ubuntu and ImageMagick
Large images means large page size, which means slow WordPress and page load times for users. The most common reason is image size or lack of compression. If you’ve never had any image size restrictions or auto-resizing on your site, it can be very handy to batch resize those images in Linux.
This tutorial will show you how to resize a group of JPG and PNG files using ImageMagick on Ubuntu or Debian.
Batch resizing images using Linux command line and ImageMagick
First, we have to install ImageMagick from the repository on Debian or Ubuntu.
sudo apt-get update
sudo apt-get install imagemagick -y
it’s better to use identify to get the height
identify -format "%wx%h" image.jpg
You will see the resolution: width and then height.
3960x2120
You can resize the image if it is large and you can specify dimensions. This will automatically preserve the aspect ratio of the image.
Note: The program overwrites the original image!
convert image.jpg -resize 1040x880> image.jpg
Check the resized image
identify -format "%wx%h" image.jpg
Things are good!
1040x780
We can now move on to batch resizing
Batch resizing images with Linux and Imagemagick
Create the following script
mkdir -p ~/scripts
nano ~/scripts/batch-image-resize.sh
Paste the script below.
FOLDER
this is the absolute path to your images folder
WIDTH
– maximum width and HEIGHT
Is the maximum height.
It will overwrite your original images, make sure you have a backup before launch!
#!/usr/bin/env bash # Purpose: Пакетное измененние размера файлов # Source: https://andreyex.ru # Author: andreyex # абсолютный путь к папке с изображениями FOLDER="/var/www/andreyex.ru/wp-content/uploads" # высота изображения WIDTH=1240 # ширина изображения HEIGHT=1000 # размер по высоте или ширине, держим пропорции, используя imagemagick find $FOLDER -iname '*.jpg' -o -iname '*.png' -exec convert {} -resize $WIDTHx$HEIGHT> {} ;
Press Ctrl + X, Y and Enter to save and exit.
Check folder size
du -sh foldername
Check the final size
215MB
The screen command will make the batch conversion work even if your SSH session ends.
sudo apt-get install screen
Create a new session screen, press space or type screen
screen
Execute the script
bash ~/scripts/batch-image-resize.sh
Detach the screen with Ctrl + A and then press D (remove).
You can use top command and watch processes jpegoptim at the same time.
Re-screen
screen -r
Check the folder size again
du -sh foldername
You should see improvement
175MB
Make sure to compress your images with Lossless or Lossy Compression (current guide).
If you need to do some more advanced commands, use a regular expression, this should help…