J'ai un répertoire avec beaucoup d'images mais elles sont mal orientées. Je veux faire pivoter les images pour corriger l’orientation (principalement ± 90o). En utilisant une visionneuse d'images (photo shotwell), je peux les faire pivoter individuellement en cliquant sur le bouton de rotation, mais c'est trop fastidieux.
J'ai consulté man shotwell
et shotwell --help-all
, mais rien ne dit comment appeler la commande rotate à partir de la ligne de commande.
Puis-je invoquer la commande de rotation de shotwell (ou de tout autre spectateur) à partir du terminal? Ou toute autre méthode de rotation des images sont également les bienvenues.
Si vous recherchez une implémentation pure bash, la commande convert
d'ImageMagick est ce que vous recherchez:
for szFile in /path/*.png
do
convert "$szFile" -rotate 90 /tmp/"$(basename "$szFile")" ;
done
En haut, les fichiers existants sont conservés et copiés dans /tmp
afin que vous puissiez les déplacer ou les copier ailleurs ou même remplacer les fichiers existants après la conversion et après la vérification = .
(et cela fonctionnera sur toutes les versions récentes d'Ubuntu en tant que logiciel standard)
for file in *.JPG; do convert $file -rotate 90 rotated-$file; done
Cela va copier -rotation - et renommer vos fichiers.
Si vous voulez laisser les fichiers originaux intacts, cette méthode peut vous convenir ...
Notez que ceci est sensible à la casse: si vos fichiers sont nommés *, remplacez-les par des minuscules (ou * .png ...) en conséquence.
Si vous voulez écraser sur place, mogrify
de la suite ImageMagick semble être le moyen le plus simple d'y parvenir:
# counterclockwise:
mogrify -rotate -90 *.jpg
# clockwise:
mogrify -rotate 90 *.jpg
Voici comment je le fais:
Installez gThumb
Sudo apt-get install gthumb
Ouvrez Nautilus et accédez à votre répertoire images. Faites un clic droit sur l'un et choisissez Open with -> gthumb
.
Dans le menu view
, choisissez Browser
ou appuyez sur le bouton Esc clé. Cela ouvrira le navigateur de répertoires affichant toutes vos images.
Presse Ctrl et sélectionnez les images que vous souhaitez faire pivoter ou sélectionnez-les toutes via Ctrl + A.
Dans la barre d’outils, sélectionnez Tools
, puis Rotate Right
ou Rotate Left
, selon vos préférences.
Une solution intéressante consiste à créer un ensemble de sauvegardes (par exemple, préfixé backup-
), à faire pivoter les fichiers d'origine pour générer un ensemble de nouveaux fichiers (préfixé par exemple rotated-
), en vous donnant un ensemble de fichiers.
img-1.png
backup-img-1.png
rotated-img-1.png
img-2.png
Les outils mv
name __/cp
[bash globbing] ne peuvent ajouter que des préfixes, il est compliqué de les supprimer (cela utiliserait l'extension de paramètre, ewww ...)
L'outil rename
vous permet d'utiliser la syntaxe de substitution s/before/after/
(à partir de l'outil sed
name__) pour permuter le préfixe de sauvegarde et écraser les fichiers d'origine. Votre processus global pour un ensemble donné d'images img-
{1..n}.png
serait:
for imgf in img-*.png; do mv "$imgf" "backup-$imgf"; done
for imgf in backup-img-*.png; do convert "$imgf" -rotate 90 "rotated-$imgf"; done
Remarque:
cp
au lieu de mv
name__, mais il y a ensuite 2 copies de l'original traînant (l'inconvénient est que vous obtenez une concaténation de préfixes, "rotated-backup-
...")-rotate 270
vous permet d'atteindre 90 ° dans le sens contraire des aiguilles d'une montre)echo "Rotating ${imgf#backup-} ... ";
après convert
(avant done
name__)pour une forme plus compacte (par exemple, un ensemble de fichiers numérotés), utilisez plutôt une extension de paramètre telle que echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";
(Vous ne pouvez pas supprimer les préfixes et suffixes dans le même développement bash param, utilisez donc cut
name__)
Après vérification, effacez les images en les replaçant dans leur format d'origine.
rename 's/^rotated-//;' rotated-*
rm backup-img-*
Vous pouvez copier/coller ce code et l'enregistrer sous rotate.sh
#!/bin/bash -e
CUR_DIR=$(pwd)
cd $1
for file in *.jpg
do
convert $file -rotate 90 $file
done
cd $CUR_DIR
Après avoir enregistré ce fichier, exécutez-le à partir du terminal en utilisant ./rotate.sh folder_containing_images
.