Comment faire pivoter un grand nombre de photos numériques de 180 degrés en une seule opération?

20

J'ai plusieurs milliers d'images prises avec une GoPro à l'envers.

Je cherche un moyen, une application vraiment, qui puisse tous les retourner, à 180 degrés, en une seule opération.

J'ai examiné toutes les options du propre logiciel de GoPro, mais je ne le trouve pas uniquement pour les images fixes. Vous pouvez faire pivoter tout en faisant une vidéo, mais je veux conserver les images individuelles.

Je suis sous Windows.

Johns-305
la source
jpegtran est la voie à suivre. il peut faire pivoter et / ou retourner des fichiers JPEG sans perte et est facile à appeler à partir d'un script car il s'agit d'une application CLI.
Sarge Borsch

Réponses:

31

Je recommanderais l' une des applications de cette liste sur JPEGclub.org , qui développe et gère des logiciels pour le groupe JPEG indépendant. Ils ont un morceau de code gratuit appelé jpegtranqui peut faire des transformations de base (comme la rotation) sans ré-encoder l'image.

La rotation des images de la manière "naïve" (rendu sur une image bitmap, réorientation de l'image bitmap et réenregistrement) peut entraîner une augmentation des artefacts JPEG - et des fichiers plus gros avec des données moins utiles.

La liste ci-dessus contient des logiciels qui sont connus pour le faire "dans le bon sens". D'autres logiciels le peuvent aussi (peut-être en utilisant une base de code différente), mais ImageMagick n'en fait malheureusement pas partie. Mais, en août 2016, il y avait 87 options différentes pour de nombreuses plates-formes informatiques différentes, y compris Windows.


Note des commentaires: l'OP a utilisé cette boucle sur la base de cette réponse:

FOR %f IN (.\Src\*.*) DO jpegtran.exe -rotate 180 %f .\Rotated\%~nxf

avec de bons résultats.

mattdm
la source
1
Notez que la rotation sans perte ne fonctionne que si chaque dimension de chaque image est un multiple de 16 pixels - 8 si le sous-échantillonnage de chrominance n'est pas utilisé. Sinon, soit les pixels en excès sont perdus, soit l'image sera remplie d'une bordure. Par exemple, 1080 n'est pas un multiple de 16!
Gnubie
2
J'appuie la recommandation de jpegtran; encore mieux, si vous vous souciez de garder la vignette et la Orientationbalise de l'EXIF cohérentes, vous pourriez considérer exiftrance qui est inexplicablement absent de la liste JPEGclub, mais sans perte. Ma commande (sous Linux) pour cela serait exiftran -i -1 *.jpgou find . -name '*.jpg' -print0 | xjobs -0 -l 10 exiftran -i -1; cela devra être adapté au shell Windows.
Toby Speight
@Toby Bon ajout. Beaucoup (la plupart?) Des programmes répertoriés conserveront et mettront également à jour les métadonnées, ce qui est une des raisons pour lesquelles je recommande l'un d'entre eux plutôt que juste jpegtrandirectement.
mattdm
Je vous remercie! J'ai utilisé jpegtran sur Windows. La rotation 180 est exactement ce dont j'avais besoin. Je mets la commande batch exacte dans la question pour une future référence.
Johns-305
@ Johns-305 Heureux d'avoir pu aider. Sur la modification de la question, voir meta.photo.stackexchange.com/questions/1601/…
mattdm
9

Vous pouvez utiliser ImageMagick avec l' rotateoption :

convert image.jpg -rotate 180 result.jpg

Vous devriez pouvoir appliquer cette commande à plusieurs fichiers, selon votre environnement.

nul
la source
10
Notez cependant que cela réencodera le jpeg, perdant ainsi sa qualité.
mattdm
8

Sous Windows, vous pouvez le faire sans aucun logiciel supplémentaire dans DEUX opérations. Sélectionnez les fichiers que vous souhaitez faire pivoter dans l'Explorateur de fichiers, faites un clic droit et faites "tourner à droite" (ou à gauche) deux fois. Cela se fera sans perte si l'image le permet (par exemple, les dimensions ne sont pas "drôles").

Agent_L
la source
Quelles sont les dimensions "drôles"? Pourquoi les dimensions d'une photo empêcheraient-elles la rotation sans perte?
scottbb
2
Après la lecture Les rotations de «Windows Photo Viewer» sont-elles sans perte? , Je comprends maintenant. Les deux dimensions doivent être un multiple de 8 pour pouvoir tourner sans perte.
scottbb
1
C'est la meilleure réponse. J'ai rejoint le site juste pour voter.
fi12
5

Vous pouvez utiliser xnview sur Windows, qui a des traitements en mode batch et aussi, pour une simple rotation d'images, avoir la possibilité de faire pivoter les images en fonction des données exif.

Sélectionnez toutes les images (même celles correctement orientées! Elle saura qu'elles sont déjà bien orientées), "faites pivoter selon exif" et elle le fera (sans recalculer le jpg, donc sans perte de qualité).

Comme on dit sur http://newsgroup.xnview.com/viewtopic.php?t=1420 :

Pour ce faire, vous sélectionnez toutes vos images et sélectionnez "Outils> Transformations sans perte JPG" (ou liste déroulante du symbole "Transformations sans perte JPG" dans la barre d'outils). Dans la boîte de dialogue, cochez le bouton avec "EXIF" dessus, puis appuyez sur "Go". XnView fera pivoter définitivement les images en fonction du drapeau d'orientation EXIF. »

Et pour la prochaine fois, si vous avez un gopro assez récent, vous voudrez peut-être également vérifier sa fonctionnalité: https://gopro.com/support/articles/what-is-auto-image-rotation

Olivier Dulac
la source
La GoPro enregistre-t-elle réellement les données d'orientation EXIF ​​correctes? Le Hero4 / Session possède un capteur d'orientation, mais je ne pense pas que les anciens modèles en aient.
vclaw
4

En supposant que vos photos sont au format JPEG, je suis assez friand de JPEGCrops , un outil simple et gratuit pour le traitement par lots d'images sans perte.

Vous pouvez recadrer selon des proportions spécifiques et / ou faire pivoter.

ths
la source
4

Puis-je suggérer le mode batch d'Irfanview, qui ne fonctionne que sur Windows. Irfanview est également bon pour les modifications simples, mais ce n'est pas GIMP.

Une fois installé, sélectionnez "Fichier | Conversion par lots / Renommer". À partir de là, cela devient un peu délicat, vous devez sélectionner tous les fichiers, vous devez spécifier un dossier de destination et vous devez cliquer sur le bouton Avancé pour voir les options avancées. Il peut pivoter de +/- 90 °, mais pour faire 180 °, vous devrez choisir une rotation fine à l'extrême droite et entrer à 180 °. Notez que vous pouvez également les redimensionner, modifier la qualité JPEG et les renommer.

Vous pouvez également le faire assez rapidement en restant dans l'interface graphique et en utilisant le clavier. Ouvrez n'importe quel fichier dans le dossier d'images. Appuyez deux fois sur «R» pour faire pivoter deux fois. Appuyez ensuite sur Ctrl-S pour enregistrer. Deux fenêtres s'afficheront, une pour votre boîte de dialogue de fichier typique et une seconde pour la compression JPEG (si le format par défaut de GoPro est JPEG). Je m'assurerais que le facteur de qualité est d'au moins 90%. Enregistrez ensuite le fichier; vous devriez pouvoir appuyer sur la touche Tab ou Alt-S pour enregistrer. Une boîte de dialogue de type «Êtes-vous sûr» peut apparaître (peut être en mesure de désactiver cela). Ensuite, appuyez simplement sur la barre d'espace pour passer au fichier suivant dans le dossier. Si vous avez plus de 50 fichiers, le lot peut être plus rapide. Dix fichiers, je fais juste ce qui précède.

L'essentiel pour Irfanview est que c'est comme Blender, il ne vous demande pas si vous voulez enregistrer si vous modifiez une image.

RocketFeathers
la source
3
Cela fera une rotation avec perte - comme il les fait tourner, puis réenregistre le JPEG, donc vous perdez de la qualité. Dans IrfanView, mieux vaut utiliser la fonction "Rotation sans perte JPEG" (Shift + J). Notez que vous pouvez utiliser la vue miniature pour sélectionner toutes vos images, puis les faire pivoter toutes en même temps.
vclaw
1
@RocketFeathers - Irfanview est l'outil le plus simple pour le faire sans perte dans un environnement Windows. Mais comme le dit vclaw, il est préférable d'utiliser la "rotation sans perte JPEG" pour le faire. Modifiez votre réponse pour refléter cela et je la voterai.
Michael C
"il ne vous demande pas si vous voulez enregistrer si vous modifiez une image." - Cela peut être modifié dans Options> Propriétés / Paramètres ...> Demander d'enregistrer les modifications à la sortie du programme.
MrWhite
3

FSViewer est un programme utile qui peut le faire.

Ouvrez le dossier où se trouvent les images, sélectionnez tout ce que vous souhaitez faire pivoter, appuyez sur F4 et accédez à l'onglet «Conversion par lots» dans la fenêtre qui s'ouvre. Cliquez sur «Options avancées» en bas à droite, accédez à l'onglet «Rotation». Cochez 'Flip / Rotate', puis 'Rotate', puis sélectionnez '180' ci-dessous et appuyez sur OK. Définissez où vous souhaitez les enregistrer et cliquez sur «Convertir».

Modifier: un moyen plus rapide et plus indolore consiste simplement à sélectionner toutes les images que vous souhaitez et à appuyer deux fois sur «Faire pivoter vers la droite et enregistrer» dans la barre d'outils. Doit être non destructif pour les JPEG.

K. Minkov
la source
3

Avec les fenêtres, vous pouvez tout marquer dans l'explorateur, puis cliquer avec le bouton droit et choisir de faire pivoter dans le sens horaire. Faites cela deux fois et vos photos sont maintenant correctement orientées.

Arjihad
la source
2

Connaissez-vous GIMP? Il existe un plugin appelé BIMP qui vous permet d'effectuer la même opération sur un ensemble d'images, à l'aide d'une interface graphique. Vous pouvez facilement l'installer à l'aide du programme d'installation officiel pour Windows.

Vous pouvez également les réenregistrer dans un autre format ou avec un taux de compression différent pour éviter une perte de qualité importante.

Conseil de pro: je l'ai fait: D

L'innatendu
la source
2
Je pense que vous vouliez dire "Disclaimer" plutôt que "Astuce Pro": p Mais super logiciel! J'ai eu besoin d'opérations par lots sur GIMP de temps en temps et j'ai plutôt recours à l'écriture de code matlab. Je garderai votre outil à l'esprit pour la prochaine fois :)
Tasos Papastylianou
1

ImageMagick est un ensemble d'outils de ligne de commande qui fonctionnent sur les images, et vous pouvez combiner ces outils avec les commandes de base du shell Unix pour appliquer la même commande à un ensemble de fichiers. Il y a beaucoup de bons exemples sur Comment faire pivoter toutes les images d'un répertoire avec imagemagick? .

Caleb
la source
Um ... et si l'OP est sur Windows et n'utilise pas Cygwin ...? :) Il se peut que vous souhaitiez ajouter "et des fichiers batch Windows" ou étendre la réponse pour indiquer qu'ImageMagick n'est pas nécessairement une solution uniquement UNIX, juste une ligne de commande.
inkista
1
Je vais essayer cet après-midi. Des binaires Windows sont disponibles.
Johns-305
1

J'utilise personnellement Adobe Lightroom. Les images peuvent facilement être pivotées et modifiées par lots, sélectionnez simplement les images que vous souhaitez faire pivoter, cliquez avec le bouton droit et sélectionnez l'option pour transformer les images en les tournant de 180 degrés.

Si vous travaillez régulièrement avec des milliers d'images qui nécessitent un traitement par lots, en particulier si elles sont plus complexes que la rotation - comme le réglage de la couleur ou de l'exposition, alors LR est probablement un investissement solide.

Je n'aime pas que Lightroom soit une source fermée, coûte de l'argent et ne fonctionne pas sur les systèmes Linux. Cependant, j'ai constaté que les fonctionnalités dépassent de loin ce qui est disponible gratuitement.

SB Ph.D.
la source
0

Vous pouvez utiliser LiveBlox et créer un pipeline pour permettre la rotation de l'image. La version de démonstration sur http://liveblox.org a un bloc de rotation, donc cela sera possible.

Il y a un tutoriel https://www.youtube.com/watch?v=kY0e5msQuiU qui montre comment faire le redimensionnement d'image par lots, il vous suffirait de remplacer la taille fixe par le rotateur pour effectuer la rotation.

Cela vous permettrait de travailler sur chaque image en un seul clic.

robby987
la source
-1

$ pour F en * jpg; convertit -rotate 180 $ F "$ (nom de base $ F .jpg) _R.jpg" && echo "Done $ F"; terminé

Explication: * pour F dans la partie .jpg de la commande attribue le nom de fichier à une variable, qui peut être rappelée plus tard pour renommer le fichier en [nom de fichier d'origine} _R.jpg

le "do convert -rotate 180" indique à l'ordinateur que vous souhaitez que vos images soient converties, en les faisant pivoter de 180 degrés.

La partie "$ (basename $ F .jpg) _R.jpg" de la commande indique le nouveau nom de fichier.

Le && indique à l'ordinateur qu'une commande supplémentaire arrive, mais que l'ordinateur n'est autorisé à exécuter la commande que si la commande précédente (rotation et changement de nom) a réussi.

echo "Done $ F" indique à l'ordinateur de vous dire ("écho" pour vous) que chaque fichier a été correctement pivoté. La sous-partie $ F de la commande rappelle la variable de nom de fichier initiale, donc la sortie dira probablement quelque chose à l'effet de "Done file1.jpg"

Et, il faut sh / csh / bash pour que cette pièce fonctionne.

bluerizlagirl
la source
5
Cela fonctionne peut-être, mais sans explication, ce n'est pas une bonne réponse. Veuillez expliquer dans quel contexte cette solution le cas échéant.
null
1
Est-ce une extension de la réponse de null en utilisant ImageMagick?
MikeW
Cela ne fonctionne pas comme prévu s'il y a déjà des *_R.jpgfichiers dans le répertoire.
pts
Merci pour la clarification, je ne sais pas si l'installation d'un shell UNIX sur Windows est une approche pratique, mais c'est une approche non moins.
null
pts, vous pouvez changer le _R.jpg en ce que vous voulez (comme "_rotated.jpg"). Vous avez raison, cela sera problématique si vous avez déjà des fichiers _R.jpg dans le répertoire.
SB Ph.D.