BASH: Redimensionner tout un lot de fichiers images

Les commandes suivantes permettent de redimensionner tout un lot d'images (jpg/png) en indiquant une taille maximum à ne pas dépasser pour la largeur et la hauteur.

Les commandes identify et mogrify sont disponibles dans le paquet imagemagick.

Dans l'exemple suivant, je vais redimensionner toutes les images PNG avec une taille de 700px maxi pour la largeur et la hauteur.

# identify *.png | awk '{split($3, TAB, "x"); W = TAB[1]; H = TAB[2]; if(W > 700){system("mogrify -resize 700x "$1)} if (H > 700){system("mogrify -resize x700 "$1)}}'

Explications:

La commande identify permet d'afficher les caractéristiques d'une ou plusieurs images.
A l'aide de la commande awk, on extrait les dimensions de l'image (fonction split) et si la largeur est supérieur à 700px on redimensionne l'image (700x) à l'aide de la commande mogrify (via la fonction system) - Idem pour la hauteur de l'image (x700).

attention La commande mogrify modifie directement le fichier d'origine.
Plus de détail ici sur les commandes imagemagick.