Le paquet imagemagick contient de très nombreux utilitaires en ligne de commande pour traiter les photos en lots.
Le script suivant est très simple : il cherche toutes les photos JPEG dans l'arborescence actuelle et les retaille en 1920x1200 (format 16x10) si le fichier dépasse la taille.
A noter que la commande convert recèle de nombreuses autres options (quality notamment).
#!/bin/bash
OLDIFS=$IFS;
IFS=$'\n';
for i in $(find ./ -type f -name "*.jpg" -o -name "*.jpeg" -o -name "*.JPG" -o -name "*.JPEG"); do
identify "$i";
w=$(identify -format "%w" "$i")
h=$(identify -format "%h" "$i")
if [ "$w" -gt 1920 -o "$h" -gt 1200 ]; then
convert -resize '1920x1200>' "$i" "$i";
fi
done
IFS=$OLDIFS
Bien entendu, ce simple script de base pourrait être amélioré en demandant à l'utilisateur les tailles les plus courantes, comme celles que l'on retrouve sur les blogs ou les réseaux sociaux, par exemple...
On pourrait également le lier directement dans Caja, le navigateur de fichier de Mate...
Personnellement j’aurais utilisé l’option -iname du find histoire de ne pas avoir à gérer la casse
sur les noms de fichiers et raccourcir la première ligne du for. C’est un poil plus court à écrire.
Je ne connaissais pas la commande identify ni le -o pour le OU dans le find. Je me coucherai moins bête…
Et maintenant, on va dans n'importe quel dossier avec Caja : un clic droit de la souris, menu "scripts", et on choisir "convertir_les_photos_de_ce_dossier.sh"