Avertissement J'écris cette page en essayant moi-même d'apprendre à utiliser ExifTool.
Il peut donc y avoir des erreurs, faites des essais sur des copies de vos photos, et soyez prudents avec les originaux.
Cette page est en constante évolution depuis septembre 2018.
J'ajoute régulièrement de nouvelles informations, de nouveaux exemples, parfois des paragraphes entiers.
ExifTool est un utilitaire extraordinaire qui permet des manipulations sur les métadonnées de nombreux types de fichiers.
Un grand merci à Phil Harvey qui en est le principal développeur, et qui fournit ExifTool en tant que logiciel libre et gratuit.
De plus, le site exiftool.org fournit une documentation d'utilisation exhaustive, agrémentée de nombreux exemples, en anglais.
C'est une incroyable somme d'informations sur les métadonnées en général, et sur les traitements réalisables avec ce logiciel hors du commun.
Je décris dans cette page essentiellement des utilisations d'ExifTool à partir de Windows, c'est à dire directement par l'utilisateur. D'autres logiciels utilsent ExifTool pour manipuler les métadonnées des photos.
Selon les cas, ces logiciels n'utilsent QUE ExifTool, on les qualifie alors "d'interface graphique" (GUI); dans d'autres cas, ils font appel à ExifTool pour des tâches spécifiques comme le géocodage, les changements de dates, l'écriture de fichiers xmp sidecar etc ...
Vous trouverez une liste de logiciels utilisant ExifTool avec une brève description dans ma page Logiciels de gestion des métadonnées Etudiez en particulier ExifToolGUI V5 et FastPhotoTagger dans cette autre page, ils sont biens plus pratiques à utiliser que ExifTool "tout seul".
(29/01/2023) Si vous penchez pour ExifToolGUI, voici un document en français traduit par Jean Yves Daniel, au format PDF ExifTool GUI pour Windows Vous trouverez aussi d'autres liens et documents intéressants dans le paragraphe ExifToolGUI de la page que je viens de citer.
ExifTool comporte un très grand nombre d'options ou de paramètres possibles, il gère une quantité impressionnante de métadonnées et de formats de fichiers.
On peut réaliser avec cet outil une infinie diversité de tâches de traitement de métadonnées, de conversions, de renommage, de tri et d'autres.
Pour aller au plus rapide, lisez le chapitre 2B qui présente la prinicipale méthode d'utilisation que je propose. Et ensuite le chapitre 3 et suivants.
Autre conseil, si vous cherchez ici des informations précises, utilisez la fonction de recherche de votre navigateur (Ctrl F) avec des mots bien ciblés
Par exemple les mots guillemet , csv , gps , dates exif , base ou des fractions de mots : renomm , accent , export , georef
1B Installation
Quelques liens utiles : Page officielle : https://exiftool.org/ dans laquelle on trouve le lien de téléchargement d'ExifTool Windows exécutable.
Installation d'ExifTool pour Windows : un document très complet en PDF Traduit de l'anglais par Jean-Yves Daniel
Installation simplifiée Cette documentation concerne avant tout Windows.
La plupart des informations restent valables avec MacOS ou Linux , mais il y aura des différences pratiques, en particulier au sujet des raccourcis et des guillemets.
Téléchargez le fichier ZIP, Windows Executable (exiftool-11.??.) dans lequel vous trouvez exiftool(-k).exe
Pour simplifier l'écriture de ce document, on va supposer que vous créez un dossier C:\Tool dans votre disque dur, dossier dans lequel vous dézippez exiftool.
Par défaut, celui-ci se nomme exiftool(-k).exe
Pour info, si vous ne voyez pas l'extension .exe, c'est une option de Windows (Outils, Option des dossiers, masquer les extensions...) qu'il vaut mieux enlever.
Evitez aussi d'utiliser un nom de dossier contenant des espaces : évitez par exemple Program Files ou Mes documents.
Si c'est (malheureusement) le cas, il faudra mettre systématiquement des guillemets autour du chemin ExifTool, y compris dans tous les exemples qui suivront.
Les raccourcis à utiliser devront alors tous comporter un appel du type "C:\Program Files\ExifTool\exiftool.exe" , suivi des paramètres utiles.
Dans la suite de cette page, nous resterons sur la supposition de dossier d'installation C:\Tool
1C Exemple d'installation
Dans le dossier C:\Tool, vous pouvez créer un sous-dossier nommé Raccourcis, où vous rangerez tous les raccourcis créés dans les exemples.
Ce qui n'empêche pas de copier ensuite ces raccourcis sur le bureau, si vous trouvez que c'est plus commode pour y glisser des photos.
Vous pouvez également créer un sous-dossier Tests pour y mettre un lot de photos destinées à faire vos essais.
J'illustre aussi un dossier bat pour y ranger les fichiers batch, un dossier conf pour les fichiers de configuration,
un dossier doc où je range ma documentation ExifTool, et un dossier temporaire img pour les images à traiter.
Voici un exemple d'organisation du dossier Tool qui va servir dans tous les exemples :
Vous voyez aussi un raccourci cmd.exe, il est expliqué dans le paragraphe 2D.
Pour lancer un traitement tel que proposé dans les exemples qui vont suivre, il vous suffira de glisser une ou plusieurs images, et les lâcher sur le raccourci souhaité.
Mon dossier Raccourcis se présente comme ceci :
1D Syntaxe des métadonnées
Les métadonnées sont des données numériques ajoutées dans les fichiers d'images, et respectant des normes précises.
Pour simplifier, on dira que ces normes sont les normes Exif, Iptc et Xmp , qui définissent des méthodes précises d'écriture des données dans les photos.
Il s'agit en réalité de séries de 1 et de 0 dans un fichier, et cette nature binaire ne définit pas un nom intrinsèque pour chaque métadonnée.
Les organismes de normalisation ont bien défini des noms pour chaque métadonnée, mais ces noms sont de nature "littéraire" pour avoir une signification pour les humains
Or ExifTool, comme tout autre logiciel travaillant sur les métadonnées, doit lui même définir des noms "techniques" plus courts et plus précis, pour les systèmes informatiques.
Ces noms peuvent prendre trois formes, selon le degré de précision nécessaire au moment où on les utilise.
Soit un nom de métadonnée simple, soit un nom de groupe et le nom de métadonnée avec le caractère deux points comme séparateur,
soit enfin, un nom de groupe complété par un sous-groupe, deux points, nom de métadonnée.
Par exemple, le mot clé XMP sera écrit : Subject ou XMP:Subject ou XMP-dc:Subject Dans certains cas le premier, Subject, suffit, car il y a peu d'ambiguïtés. Quand on a des doutes, on utilise le deuxième , XMP:Subject.
Et pour certaines métadonnées dont le nom est ambigu, on utilisera le nom complet XMP-dc:Subject
En plus des trois groupes de métadonnées EXIF, IPTC et XMP, il existe quelques autres groupes plus ou moins utilitaires : File, Composite, et d'autres.
Il existe également le groupe MWG qui est en fait plutôt une astuce d'ecriture, j'en dirai quelques mots vers la fin de cette page.
Vous l'avez remarqué dans la troisième forme d'écriture ci-dessus, XMP-dc:Subject, il existe donc aussi des sous-groupes.
Le sous groupe dc du groupe XMP correspond à une phase de normalisation XMP dite "Dublin Core".
Il existe de nombreux sous-groupes, il faudrait que je propose ici une liste des plus classiques . Doc à faire.
En attendant, voici un lien vers le site ExifTool pour les métadonnées XMP avec tous les sous groupes: https://exiftool.org/TagNames/XMP.html Juste une précision pour info, le sous groupe XMP-Iptc4XmpExt s'écrit XMP-IptcExt dans ExifTool
ExifTool étant devenu un peu une référence en matière de métadonnées, utiliser la forme "ExifTool" des noms de métadonnées assure une bonne précision et une relative standardisation lorsqu'on discute de métadonnées. Mais la véritable référence reste dans les documents officiels de chaque organisme de normalisation.
Et vous pouvez lire ce document instructif de Bogdan Hrastnik, traduit par Jean Yves Daniel :
Metadonnées : que sauver et où? qui décrit les métadonnées classiques utilisées par des amateurs
1E Conventions
Un mot sur les conventions d'écriture, les majuscules, la syntaxe.
Conventionnellement, on écrit des noms de métadonnées avec des majuscules. ex: IPTC:Caption-Abstract, mais ça n'est pas indispensable
Les majuscules sur IPTC mettent en relief visuellement le groupe IPTC, le caractère deux points sert de séparateur, Caption avec un C majuscule, c'est pour faire joli.
ExifTool ne fait aucune différence entre majuscules et minuscules, y compris dans les options, sauf quelques exceptions:
En effet, il existe des options comme -p ou -t où la forme majuscule -P et -T fait appel à d'autres paramètres.
Autre exception, dans les "fichiers de configuration", les noms de métadonnées doivent respecter la convention citée en début de ce paragraphe, avec les majuscules adéquates.
Dans les commandes passées à ExifTool, il faut être très attentif à l'utilisation des espaces, qui sont significatifs.
Les options sont séparées par des espaces, mais les commandes traitant les métadonnées ne comportent pas d'espace, sauf quelques cas :
- une information que vous entrez dans une métadonnée contient un espace, des guillemets doivent être utilisés pour encadrer la commande
- un nom de fichier ou de dossier contient des espaces, utilisez aussi des guillemets
- après un opérateur d'affectation, le caractère espace est utilisé pour effacer une métadonnée. Là encore des guillemets sont quasi nécessaires.
- Attention, si vous lisez cette page à travers une traduction de Google, celui-ci modifie les espaces et la ponctuation des commandes exiftool.
Donc les commandes exiftool données en exemple doivent être utilisées dans la version originale en français de cette page.
- Un mot sur Linux et Mac OS : Généralement, là ou j'indique l'utilisation des guillemets doubles pour Windows, on utilisera l'apostrophe pour les deux autres systèmes (quote)
- Les photos dont le nom contient des caractères spéciaux ou accentués sont difficiles à gérer avec ExifTool.
Il en est de même pour les noms de dossiers accentués, mieux vaut s'abstenir de les utiliser si on ne connaît pas les moyens de contourner les difficultés.
Cette documentation a été réorganisée plusieurs fois, et je conseille de parcourir d'abord rapidement le chapitre 4 des options, avant d'étudier les exemples proposés.
ooooooooooooooooooo
2 Différentes méthodes pour utiliser ExifTool
2A Utilisation d'ExifTool en modifiant son nom
On a vu que le nom par défaut d'ExifTool était : exiftool(-k).exe
La présence de ce (-k) dans le nom du logiciel illustre la possibilité de passer un paramètre entre parenthèses dans le nom même du programme exiftool.
Dans le cas présent, le paramètre -k permet d'éviter que la fenêtre d'exécution ne se referme toute seule.
Passer des paramètres via le nom d'Exiftool Une limitation de Windows et de MSDOS fait qu'on ne peut pas passer tous les paramètres qu'on voudrait de cette façon mais voici un premier exemple :
- Avec l'explorateur, ouvrez le dossier contenant exiftool. (nous avons convenu qu'il s'agit de C:\Tool )
- Changez le nom exiftool(-k).exe en : exiftool(-k -lang fr).exe et gardez ce dossier visible.
- Avec la souris, attrapez une photo qui contient des métadonnées et lâchez-la sur exiftool
Vous obtenez une fenêtre qui affiche les métadonnées contenues dans la photo. Le paramètre -lang fr ayant traduit les informations en français.
Appuyez sur Entrée pour terminer.
Prenons un deuxième exemple, cette fois pour enregistrer les métadonnées dans un fichier texte.
- Changez le nom exiftool en : exiftool(-lang fr -a -u -g1 -w txt).exe . Dans cet exemple on peut enlever le paramètre -k, et la fenêtre se refermera seule.
- Avec la souris, attrapez la photo et lâchez-la sur exiftool(-lang fr -a -u -g1 -w txt).exe
- Vous obtiendrez, dans le dossier d'origine de la photo, un fichier texte ayant le même nom que la photo, contenant toutes les métadonnées.
Voici l'illustration:
ExifTool, en utilisant les paramètres -a -u -g1 -w txt , a extrait les métadonnées de l'image et les a mises dans le fichier texte.
On verra plus tard à quoi correspondent ces paramètres, le but était juste d'illustrer une première façon d'utiliser exiftool.
Remettez le nom "ordinaire" de exiftool. Placé dans le dossier C:\Tool , son nom complet devient : C:\Tool\exiftool.exe
2B Utilisation d'ExifTool avec un raccourci
Ce sera le principal mode d'utilisation décrit dans toute la suite de cette page : attardez vous un peu sur ce paragraphe.
Premier exemple Dans le dossier C:\Tool, faites un clic-droit sur exiftool.exe, et cliquez "Créer un raccourci".
Avec un clic-droit, ouvrez les propriétés du raccourci.
Dans la première case (de l'onglet Raccourci), Cible, écrivez C:\Tool\exiftool.exe -a -u -g1 -k -G -lang fr -charset latin Dans l'onglet Général, modifiez le nom du raccourci, mettez AFFICHER avec EXIFTOOL, et cliquez OK.
Dans l'onglet Police, choisissez la police Lucida console pour améliorer la lecture des caractères accentués.
Vous pouvez déplacer ce raccourci, et le mettre dans un dossier C:\Tool\Raccourcis par exemple, ou sur le bureau.
Utilisation : Glissez une photo sur ce raccourci, et vous obtenez une fenêtre qui affiche toutes les métadonnées contenues dans la photo.
Appuyez sur la touche Entrée pour la refermer.
Deuxième exemple Dans le dossier C:\Tool, créez à nouveau un raccourci pour exiftool
Modifiez la case Cible en écrivant C:\Tool\exiftool.exe -a -u -g1 -w txt comme dans l'exemple précédent (et appliquez) :
Vous pouvez ensuite nommer ce raccourci "MetaToTxt" et le déplacer.
L'utilisation est la même: vous glissez une photo sur le raccourci, et, comme dans l'exemple du paragraphe 2A, vous récupérez les métadonnées dans le fichier texte à côté de la photo !
Cette méthode a des avantages : vous pouvez créer autant de raccourcis différents que vous voulez, leur choisir un nom et un emplacement pratique.
De plus, vous n'avez plus la limitation de Windows qui interdit pour la méthode précédente certains caractères dans les noms de fichiers.
Par ce biais, les paramètres sont "enregistrés" dans le raccourci, et c'est Windows qui les transmet à ExifTool.
La plupart des exemples donnés dans cette page vont reposer sur cette méthode des raccourcis.
Troisième exemple Développons le même exemple pour obtenir les métadonnées en Français :
Créez un nouveau raccourci et utilisez les options -lang et -charset dans la case Cible
C:\Tool\exiftool.exe -a -u -g1 -G -lang fr -charset latin -w txt ... et nommez ce nouveau raccourci un peu plus français : MetaTxtFr
Illustration de l'utilisation du raccourci MetaTxtFr
Glissez une photo sur le raccourci, et vous récupérez les métadonnées francisées dans le fichier txt généré.
Quatrième exemple (19/04/2021)
Créez un nouveau raccourci vers exiftool, et mettez C:\Tool\exiftool.exe -a -u -g1 -G -lang fr -L -k   dans la case cible.
Dans l'onglet Police, sélectionnez la police Lucida console, et dans l'onglet Général, nommez ce raccourci : Affiche Meta
Vous pouvez mettre ce raccourci sur le bureau, il pourra être utilisé à tout moment ...
Glissez une photo sur le raccourci, une fenêtre à fond noir s'ouvre qui affiche toutes les métadonnées de la photo.
L'option -k permet de maintenir cette fenêtre ouverte pour lire le résultat. Appuyez sur Entrée pour la refermer.
Si vous voulez diminuer le nombre d'informations affichées, vous pouvez spécifier un groupe de métadonnées à afficher ou à ne pas afficher.
Pour afficher uniquement les informations IPTC par exemple, ajoutez -iptc:all , ou pour empêcher leur affichage, doublez le tiret : --iptc:all
Cinqième exemple Créez un nouveau raccourci, mettez en cible : C:\Tool\exiftool.exe -L "-IPTC:Caption-Abstract<Filename" Nommez ce raccourci : NameToCaption
Votre raccourci NameToCaption aura pour effet de recopier le nom de la photo dans la métadonnée IPTC:Caption-Abstract de la (ou des) photos gilssées sur lui. (Caption-Abstract = Légende ou titre)
Je ne vous fais pas un dessin, vous avez compris le truc, maintenant.
Deux variantes : avec la légende XMP en plus, ça fait : C:\Tool\exiftool.exe -L "-IPTC:Caption-Abstract<Filename" "-XMP:Description<Filename" Et si on veut le nom de fichier sans extension : C:\Tool\exiftool.exe -L -k "-IPTC:Caption-Abstract<${FileName;s/\.[^.]*$//}" "-XMP:Description<${FileName;s/\.[^.]*$//}"
Si vous vous demandez à quoi peut servir de mettre le nom d'une photo dans la métadonnée citée, eh bien quand vous enverrez vos photos vers des albums en ligne, elles auront automatiquement leur nom comme légende.
Il est évidemment possible de prendre n'importe quelle autre métadonnée pour la copier dans la légende.
Avec la métadonnée "Headline" ça donnerait : C:\Tool\exiftool.exe "-IPTC:Caption-Abstract<IPTC:Headline"
(13/11/2018) Remarque : Observez que j'ai ajouté des guillemets autour des commandes de ces exemples.
Il semble que ces guillemets ne soient pas obligatoires dans les raccourcis de Windows, mais si des utilisateurs souhaitent lancer ces commandes
"en ligne de commande" comme je le décris un peu plus bas au paragraphe 2D, le signe < va être interprété par Windows d'une toute autre façon que celle qu'on souhaite
avec ExifTool.
Précisions : Vous pouvez sélectionner plusieurs photos d'un coup (ou même un dossier de photos), et les glisser sur le raccourci.
Quand une photo est modifiée, ExifTool crée automatiquement une copie de sauvegarde de la photo originale avec une extension de nom : _original;
Il y a différentes options pour gérer ces copies de sauvegarde, allez voir le chapitre 5.
2C Utilisation d'ExifTool avec un fichier batch
Voici une troisième méthode, plus compliquée, et qu'on n'utilisera que dans quelques cas précis.
Les fichiers batch (traitement par lots) sont des fichiers contenant des commandes interprétées par Windows, et dont le nom comporte l'extension .bat
Les commandes sont rédigées au format texte, les unes à la suite des autres, et grâce à l'utilisation de variables et de quelques
commandes de contrôle, le fichier batch peut réaliser des tâches complexes et constituer un programme de traitement.
Dans le contexte de cette page consacrée à ExifTool, il y aura donc une ligne qui va appeler exiftool.exe dans le fichier batch.
On ne va voir dans ce chapitre que des batch assez rudimentaires ...
Phil Harvey a conçu ExifTool de manière à ce qu'on puisse se dispenser de traitements batch, mais au prix d'un apprentissage plus ardu.
L'exemple 2 peut être réalisé "en ligne de commande" , mais il faut un peu de pratique des commandes MsDos.
Exemple 1 qui ne sert que d'illustration
Créez un fichier texte (clic-droit, nouveau, document texte). Double cliquez, et écrivez dedans les lignes suivantes
C:\Tool\exiftool -L "-IPTC:Caption-Abstract<Filename" *.jpg
pause enregistrez, puis changez le nom de votre "Nouveau Document texte.txt" en "NameToCaption.bat" sans les guillemets.
Remarques
La ligne de commande contient donc l'appel à ExifTool, le traitement sur la métadonnée dans les guillements, une option "-L" (affichage des caractères "Latin"),
Et la ligne de commande se termine par *.jpg, ce qui signifie que le traitement s'applique à tous les fichiers dont le nom se termine par .jpg (et non .JPG).
On aurait pu mettre un nom de dossier à la place de *.jpg , dans ce cas tous les types de fichiers compatibles avec ce traitement IPTC seront traités.
(les noms de dossiers avec un chemin msdos relatif ou absolu par rapport au fichier bat, exemple ..\imagestest\test01 . Le plus simple étant le point tout seul . )
La commande "pause" est une fonction des fichiers batch de Windows, qui permet de maintenir la fenêtre d'exécution ouverte afin de lire le compte rendu.
L'utilisation de ce fichier batch diffère notablement des autres méthodes :
Pour l'utiliser, COPIEZ votre NameToCaption.bat DANS un dossier contenant des photos, et double cliquez dessus :
Pour chaque photo jpg dans le dossier courant, il copiera le nom de la photo dans la métadonnée Caption-abstract (IPTC)
C'est le même traitement que l'exemple précédent, mettre le nom du fichier dans la métadonnée IPTC:Caption-Abstract et garder une copie de la photo originale.
Ce premier exemple n'a donc pas beaucoup d'intérêt, la méthode n'apporte rien de plus, elle est moins pratique, mais c'est une première illustration.
Avant d'aller plus loin, pour les personnes qui souhaiteraient utiliser exiftool simplement pour extraire une ou plusieurs métadonnées dans un fichier batch,
pensez à utiliser l'option -p telle qu'elle est décrite à la fin du chapitre 2E
Exemple 2 Extraire des métadonnées pour un tableur
Cet exercice va permettre de créer pour un ensemble de photos, un fichier csv (destiné à un tableur) contenant une métadonnée extraite des photos.
Cette fois, on va passer des paramètres au fichier batch, ce qui va nettement améliorer le confort d'utilisation.
Il s'agira, pour ce fichier batch, de "recevoir" les noms des fichiers à traiter par un simple glisser-déposer.
De la même façon que ci-dessus, créez un nouveau fichier, nommé SortieCSV.bat
Mettez-y les commandes suivantes :
C:\Tool\exiftool.exe -csv -m "-iptc:Caption-Abstract" %* > c:\Tool\bat\resultat.csv
pause
- On retrouve l'appel à ExifTool, deux options -csv et -m, la première permet de formater le résultat pour un tableur, et l'autre, le -m évite d'afficher les anomalies mineures.
- Il faudrait vérifier aussi quelques autres paramètres, comme le -n si l'objectif est de réimporter des métadonnées vers les photos dans une phase ultérieure.
- Ensuite, dans les guillements, la métadonnée qu'on souhaite extraire, ici la légende IPTC, et ensuite une commande spécifique de fichier batch, %*
Cette commande %* récupère les données qui ont été fournies au batch. Dans le présent exemple, il s'agira des noms des fichiers à traiter.
C'est à dire qu'on va sélectionner quelques fichiers de photos, et les glisser et les déposer sur le fichier batch.
Ainsi, les noms des fichiers photos à traiter vont être transmis à la variable %*, et ExifTool va pouvoir les traiter.
Par rapport à l'exemple 1, le confort d'utilisation est nettement meilleur, il n'est plus nécessaire d'aller emmener le fichier batch dans le dossier des photos.
- On trouve ensuite le symbole > et un nom de fichier, fichier nommé par exemple resultat.csv, qui contiendra le résultat souhaité.
Le symbole > est utilisé par le fichier batch, et pas par ExifTool, c'est une redirection.
C'est à dire que le résultat du traitement ExifTool sera redirigé vers le fichier indiqué (resultat.csv) au lieu d'être envoyé à l'écran.
Ce symbole de redirection n'est pas utilisable dans un raccourci Windows, c'est pour cette raison qu'on utilise ce fichier batch.
- Et comme dans l'exemple 1, il y a la commande pause.
Dans la plupart des exemples qui suivront, c'est le paramètre -k d'ExifTool qui joue ce rôle de conserver la fenêtre ouverte.
Mais ici, le -k "suspendrait" le fonctionnement du batch avant que la redirection vers le fichier de sortie ne se fasse ...
Or, il est intéressant de lire le contenu du fichier de sortie avant de refermer le fenêtre du batch ...
Une option intéressante que je n'ai pas utilisée ici : -csvDelim ";" qui permet de définir le point-virgule comme délimiteur en cas de besoin.
Utilisation :
Glissez quelques photos contenant une légende IPTC sur le fichier batch "SortieCSV.bat" et relâchez-les
(Vous pouvez aussi bien glisser un dossier sur le fichier batch, mais je suppose qu'il faudrait ajouter l'option -r avec le -m et -csv)
Vous verrez apparaitre le fichier résultant, "resultat.csv" dans le dossier spécifié, C:\Tool\bat dans mon exemple.
Vous pouvez lire ce fichier avec le bloc notes, ou avec un tableur (Excel, Calc...)
Lisez aussi l'exemple suivant, dans lequel j'apporterai des précisions.
Ce fichier est mis en forme par ExifTool, il contient une ligne d'en-têtes, et autant de lignes que de photos traitées.
Chaque ligne comporte le nom complet de la photo, et la métadonnée extraite, la légende iptc dans notre exemple.
Exemple 3 Exporter des métadonnées pour une base de données
Cet exemple est juste une petite évolution du précédent, il illustre la syntaxe à respecter pour obtenir un tableau exporté avec plusieurs métadonnées.
Il correspond cependant à un cas d'utilisation bien plus intéressant, c'est la possibilité d'exporter un grand nombre de métadonnées.
Le contenu du fichier batch va être celui-ci :
C:\Tool\exiftool.exe -csv -m -r "-iptc:Caption-Abstract" "-iptc:Headline" "-iptc:city" %* > c:\Tool\bat\resultat.csv
pause Vous voyez qu'il suffit d'encadrer chaque métadonnée avec des guillemets (doubles pour Windows). Cela formera autant de colonnes dans le tableau résultat.
L'option -r (récursivité) a été ajoutée, qui permet de traiter les photos contenues dans des sous-dossiers, lorsqu'on transmet un nom de dossier à ExifTool.
L'option -G (Group) a également été ajoutée, elle permet de spécifier les groupes dans les en-têtes de sortie et donc d'éviter les ambiguités de noms (iptc:city et xmp-photoshop:city par exemple, lors d'un import ultérieur)
Cette option a l'inconvénient de remettre les différents champs dans un ordre différent dans le fichier résultat, en fait il est aussi simple de rajouter IPTC: à la main...
Voici le fichier Batch "SortieCSV.bat" :
Et voici le genre de fichier résultat qu'on obtient, en déposant un petit dossier test de 5 photos sur le batch:
Dans la phase de mise au point, vous pouvez utiliser la métadonnée "-iptc:all" , ce qui vous donnera dans la ligne d'en-tête les noms exacts des métadonnées que vous pourrez préciser par la suite.
Il en est de même évidemment en XMP avec "-xmp:all", mais la liste des métadonnées xmp est souvent bien longue.
Le but de ces manipulations est de pouvoir ensuite visualiser ou traiter ces données en ouvrant le fichier dans un tableur Excel, ou Open Office Calc, ou autre ...
Comme indiqué précédemment, la mise en forme des données est faite par ExifTool, qui écrit les noms des métadonnées en en-tête des colonnes
Ensuite, chaque ligne contient le nom de la photo, et les métadonnées spécifiées séparées par des virgules ce qui constituera les colonnes dans le tableur.
Si une métadonnée était vide, il y n'aura rien entre deux virgules, et le nombre de colonnes sera respecté, sans décalage.
C'est l'option -csv qui définit la virgule comme caractère séparateur de colonnes. On peut utiliser à la place l'option -T, qui définit la tabulation comme caractère séparateur.
Retenez que l'élément essentiel de ces exemples n'est pas l'option -csv, mais la redirection des résultats vers un fichier, redirection réalisée en fait par Windows.
Si vous souhaitez "allonger" un tableau de données déjà existant, le sympbole de redirection doit être doublé >>, et l'option -s3 permet de ne pas réécrire la ligne d'en-tête.
Supposons que vous ayez eu un traitement à faire dans un tableur sur ces métadonnées extraites ; Vous allez pouvoir ensuite les réinjecter dans les photos.
Cette écriture "en nombre" de métadonnées dans les photos ne nécessitera pas l'utilisation d'un fichier batch, et la méthode est décrite dans le chapitre 3D
Ressources : (10/05/2020)
Une page en anglais sur ce sujet d'extraction de métadonnées vers un tableur : http://carlibrary.org/ExifTool.htm Et une page en Français, décrivant l'extraction de métadonnées de fichiers PDF : https://jdr.hypotheses.org/131.
Cette page est courte, bien faite, et l'exemple décrit est facile à comprendre et à généraliser.
Si vous voulez aller plus loin avec les fichiers batch, voici une doc en anglais sur le langage de script (batch) Windows
Exemple 4 (30/11/2020) Exporter les coordonnées GPS dans un fichier GPX
Le but est de construire un fichier de trace GPX à partir des coordonnées GPS inscrites dans un lot de photos géoréférencées.
Dans ce nouvel exemple, le résultat produit par ExifTool va devoir être redirigé dans un fichier GPX de sortie.
L'utilisation de la redirection ">" de Windows implique donc le recours à un fichier BAT.
Les fichiers GPX sont des fichiers texte, dont la syntaxe est précise et codifiée.
Ils représentent une série ordonnée de points définis par leurs coordonnées géographiques et leur horodatage.
Cette série de points est le plus souvent collectée et mise en forme par un GPS, ou une appli de "trace GPS" fonctionnant dans un smartphone.
Pour respecter la "syntaxe GPX", ExifTool va avoir besoin d'un fichier de formatage, précisé par l'option -p
Les utilisations possibles de ces fichiers GPX sont
- La représentation sur une carte d'un parcours, d'une randonnée, à l'aide d'un logiciel ou dans un site web comme visugpx.com par exemple.
- La comparaison des dates/heures de photos avec les heures des points référencés, afin d'écrire les coordonnées GPS dans les photos où elles sont manquantes.
- L'historique des points de la randonnée, pour pouvoir la communiquer à d'autres randonneurs.
Comme indiqué au début de l'exemple 1, créez votre fichier BAT, contenant les commandes suivantes
C:\Tool\exiftool.exe -m -r -fileOrder datetimeoriginal -p "c:\Tool\conf\gpx.fmt" %* > c:\Tool\bat\trace.gpx
pause Et enregistrez-le sous le nom GPX_Gen.bat
Il y a donc deux options, -m et -r, l'une pour masquer les erreurs mineures et l'autre pour lire récursivement les contenus de dossiers ou sous-dossiers.
Puis l'option -fileorder datetimeoriginal afin que les points GPS de chaque photo soient classés dans l'ordre chronologique dans le fichier GPX de sortie
Puis l'option -p "c:\Tool\conf\gpx.fmt" qui indique à exifTool que le format à respecter en sortie est défini dans le fichier "gpx.fmt"
Ensuite le symbole de redirection > qui renvoie le résultat dans le fichier défini juste à la suite : "trace.gpx"
Le fichier de formatage Sa rédaction dépasse mes compétences; Mais il se trouve que Phil Harvey le fournit sur le site ExifTool, dans la rubrique
Inverse geotagging, rubrique d'ailleurs fort intéressante.
En voici une copie:
#------------------------------------------------------------------------------
# File: gpx.fmt
#
# Description: Example ExifTool print format file to generate a GPX track log
#
# Usage: exiftool -p gpx.fmt -ee FILE [...] > out.gpx
#
# Requires: ExifTool version 10.49 or later
#
# Revisions: 2010/02/05 - P. Harvey created
# 2018/01/04 - PH Added IF to be sure position exists
# 2018/01/06 - PH Use DateFmt function instead of -d option
# 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
#
# Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude.
# 2) The -ee option is to extract the full track from video files.
# 3) The -fileOrder option may be used to control the order of the
# generated track points when processing multiple files.
#------------------------------------------------------------------------------
#[HEAD]<?xml version="1.0" encoding="utf-8"?>
#[HEAD]<gpx version="1.0"
#[HEAD] creator="ExifTool $ExifToolVersion"
#[HEAD] xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
#[HEAD] xmlns="http://www.topografix.com/GPX/1/0"
#[HEAD] xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
#[HEAD]<trk>
#[HEAD]<number>1</number>
#[HEAD]<trkseg>
#[IF] $gpslatitude $gpslongitude
#[BODY]<trkpt lat="$gpslatitude#" lon="$gpslongitude#">
#[BODY] <ele>$gpsaltitude#</ele>
#[BODY] <time>${gpsdatetime#;my ($ss)=/\.\d+/g;DateFmt("%Y-%m-%dT%H:%M:%SZ");s/Z/${ss}Z/ if $ss}</time>
#[BODY]</trkpt>
#[TAIL]</trkseg>
#[TAIL]</trk>
#[TAIL]</gpx>
Collez ce texte dans un fichier, et nommez-le gpx.fmt (au format texte évidemment, mais sans l'extension.txt)
Pour être en adéquation avec mon exemple, placez-le dans le dossier C:\Tool\conf
Utilisation :
Glissez des photos contenant des coordonnées GPS sur le fichier GPX_Gen.bat
ExifTool va extraire les heures et coordonnée GPS de chaque photo, et va constituer le fichier trace.gpx correspondant.
Vous pourrez alors uploader ce fichier vers un site internet capable de le visualiser sur une carte, comme VisuGpx.com
Vous pouvez également l'utiliser dans un logiciel de visualisation tel que GpxSee
Vous pouvez ensuite faire une copie d'écran de la carte et l'enregistrer avec les photos afin d'illustrer votre randonnée
Exemple 5 (18/04/2021) Inscrire des coordonnées GPS dans les photos à l'aide d'une trace gps
Il s'agit de la manip inverse de celle qui vient dêtre décrite dans l'exemple précédent.
Cet exemple ne nécessite pas spécialement de recourir à un fichier batch, mais puisque j'ai abordé le sujet GPS dans l'exemple précédent, je continue ici.
Le moyen "ordinaire" d'obtenir une trace GPS (au format gpx) consiste à utiliser une appli sur smartphone, un GPS, ou un gps logger (si ça existe encore)
Il y a d'autres moyens d'obtenir des fichiers de type GPX, par exemple en allant les télécharger sur des sites de rando.
Certains sites permettent d'en fabriquer "sur mesure" ; j'ai trouvé deux sites qui ont ont une caractéristique intéressante pour cela : visugpx.com et mygpsfiles.com
Ces deux sites permettent d'attribuer des dates / heures de début pour la trace, ainsi qu'une vitesse moyenne, fonction que je n'ai trouvé nulle part ailleurs.
Cet horodatage est indispensable pour estimer l'emplacement de vos photos en fonction des durées écoulées.
Opentraveller.net et calculitineraires.fr permettent de construire une superbe trace en quelques clics, en suivant automatiquement routes et sentiers, et sur un fond de carte IGN pour le premier.
Une fois réalisée, téléchargez votre trace, passez-la ensuite chez visugpx.com pour l'horodater, et vous avez un fichier gpx aux petits oignons.
On prend donc pour point de départ un fichier trace au format gpx, par exemple trace1.gpx , qu'on a copié dans c:\Tool\tests
Ce fichier GPX doit contenir des points gps horodatés correspondant au même intervalle de temps que le lot de photos que vous voulez géoréférencer.
L'opération repose sur une simple option d'ExifTool, -geotag , suivie du nom de fichier contenant la trace gpx.
La forme de la commande, classique, sera pour un raccourci, exiftool "-geotag c:\Tool\tests\trace1.gpx" Vous pourrez ajouter diverses options, par exemple -geosync si les heures des photos ont un décalage avec les heures GPS.
Voici un lien vers la documentation dans le site d'ExifTool : https://exiftool.org/geotag.html pour des informations complémentaires.
Si la commande est passée en fenêtre de commande ou en batch, il faut préciser en plus l'emplacement des fichiers à traiter, par exemple C:\Tool\temp
La commande aura la forme exiftool "-geotag c:\Tool\tests\trace1.gpx" "c:\Tool\temp" Je ne connais pas le détail des calculs réalisés pour faire correspondre des emplacements de photos à des horodatages, mais ça marche pas mal.
La même opération est possible avec le logiciel gratuit PicaGeoTag, qui utilise ExifTool.
Celui-ci peut aussi bien géoréférencer vos photos à partir d'une trace gpx, que faire l'opération inverse, c'est à dire de créer un fichier GPX, de manière assez commode.
Exemple 6 (17/04/2021) Entrer des métadonnées contenant des caractères accentués dans des photos.
Les principales informations apportées par cet exemple concernent la gestion des lettres accentuées en français par Windows et Exiftool
1) L'édition d'un fichier bat avec le bloc notes de Windows se heurte à une difficulté :
Soit le fichier bat est enregistré au format ANSI de Windows et, lors de son fonctionnement, il ne gèrera pas les accents correctement
Soit on l'enregistre au format UTF8, et cela provoque un dysfonctionnement de la première ligne du batch.
La solution consiste à utiliser un autre éditeur, comme Notepad++, et enregistrer le fichier batch au format UTF8.
2) Lorsque le batch est en fonctionnement, la fenêtre d'affichage est la console Windows, qui ne gère pas les accents.
Pour y remédier, il faut modifier la police utilisée ; dans le cas d'un raccourci, c'est dans l'onglet "Police" des propriétés : choisissez : Lucida console.
Dans le cas d'un fichier batch, il faut un artifice : créez un raccourci vers le fichier bat, et modifiez la police dans les propriétés du raccourci.
Vous devrez donc lancer le batch en cliquant le raccourci.
3) Quand le batch fonctionne, il faut qu'il utilise un jeu de caractères UTF8.
Pour cela , ajoutez en début de fichier la commande chcp 65001 > null
4) Pour que ExifTool utilise les caractères accentués, ajoutez l'option -L à votre commande ExifTool . -L équivaut à -charset=Latin
5) Pour que les champs IPTC acceptent les caractères accentués, il faut qu'ExifTool inscrive un tag iptc supplémentaire dans la photo :
Ajoutez comme premier tag à écrire "-iptc:CodedCharacterSet=utf8"
Avec ces réglages et paramètres, on peut écrire des caractères accentués dans les métadonnées.
Je n'ai pas étudié le problème des noms de fichiers contenant des caractères spéciaux ou accentués, c'est encore autre chose.
Pour le moment, je me contente de m'abstenir d'utiliser ces caractères, surtout dans les noms de dossiers.
2D Utilisation d'ExifTool en ligne de commande
Vous remarquerez que jusqu'ici on a réussi à utiliser ExifTool depuis Windows, alors que vous lisez partout sur le net qu'on ne peut l'utiliser qu'en ligne de commande.
Pour éviter de perdre des lecteurs débutants, j'ai donc mis ce paragraphe en 4e position, et au début il vaut mieux se dispenser d'utilser ExifTool de cette façon.
Pour accéder à "la ligne de commande" de Windows de manière commode dans un dossier spécifique, voici comment procéder.
Affichez le dossier dans l'explorateur (C:\Tool par exemple). Clic-droit, Nouveau, Raccourci... Dans "emplacement" écrivez : cmd , puis cliquez suivant et terminer.
Copiez le chemin indiqué par l'explorateur (C:\Tool dans ce cas), puis avec un clic-droit, ouvrez les propriétés de votre raccourci "cmd", et collez le chemin C:\Tool dans la case "Démarrer dans"
Dans l'onglet "Police", sélectionnez la police Lucida console, afin d'avoir un meilleur affichage des lettres accentuées.
Voilà, le raccourci cmd est prêt, vous pouvez éventuellement le déplacer, puis le double cliquer pour obtenir une fenêtre de commande avec le prompt C:\Tool>
Tapez par exemple exiftool -h (sous Windows)
...vous allez voir défiler toute la documentation d'aide de ExifTool. Utilisez Ctrl C pour interrompre la sortie.
Voilà, vous avez lancé au moins une fois ExifTool en ligne de commande.
(Si cette doc d'aide intégrée vous intéresse, vous pouvez la copier dans un fichier : tapez exiftool -h > DocExifTool.rtf . Vous pourrez lire ce fichier avec Wordpad ou tout autre traitement de texte).
Sous Linux, tapez man exiftool pour obtenir ces pages d'aide.
(15/04/2021) Forme générale d'une commande de traitement ExifTool : exiftool -Option -Option -DonnéeCibleOpérateurDonnéeSource Fichiers La gestion des espaces dans ces commandes est très stricte.
Les trois éléments -DonnéeCible Opérateur DonnéeSource ne doivent pas être séparés par des espaces, mais contigus.
Si des espaces sont utilisés à l'intérieur de cet ensemble, on encadre le tout avec des guillemets : "-DonnéeCibleOpérateurDonnéeSource"
On peut réaliser plusieurs traitements en une seule ligne, et donc ajouter plusieurs ensembles -DonnéeCibleOpérateurDonnéeSource
exiftool : C'est évidemment l'appel à cet utilitaire. Il est préférable de préciser le chemin d'accès (C:\Tool\exiftool)
C'est une commande interprétée par Windows, et qui respecte les règles inhérentes à ce système d'exploitation.
Options : Chaque option est immédiatement précédée d'un tiret et suivie d'un espace. Exemple : -F -m
Certaines options ont des paramètres, par exemple : -d %Y%m%d , on peut utiliser des guillemets pour entourer l'ensemble : "-d %Y%m%d"
Les options qui peuvent modifier les données source doivent être spécifiées avant la donnée, donc en début de commande
Donnée-cible : une métadonnée définie par son nom, précédée d'un tiret
Si aucune donnée cible ni opérateur ne sont utilisés, le résultat sera renvoyé vers l'affichage.
Opérateur : l'opérateur, placé immédiatement après la cible, permet de définir l'opération à réaliser sur la donnée cible (écriture, ajout, suppression ... )
Donnée-source : Elle peut être une métadonnée, un ensemble de métadonnées, ou une valeur, et tenir compte d'un formatage spécifié par une option.
Elle peut aussi être modifiée par une opération et dans ce cas, elle est contenue dans une expression commençant par ${ et se terminant par l'autre accolade }
Fichiers : il y a divers moyens pour préciser les fichiers qui devront subir le traitement exiftool. C'est le système (Windows) qui gère cet élément, avec ses propres règles. Voyez les exemples plus bas.
Le résultat de la commande est renvoyé au système, qui l'affiche dans la fenêtre d'exécution d'exiftool.
Si la commande ne produit des résultats que vers des métadonnées cibles, le résultat affiché est un simple compte-rendu.
Si le résultat de la commande est destiné à l'affichage (pas de donnée cible spécifiée), il peut être réutilisé par le système et renvoyé dans un fichier, grâce à la fonction de redirection ( >) .
La forme est alors : exiftool -option -option DonnéeSource Fichiers > FichierResultat . Ces éléments sont séparés par des espaces.
Certaines options permettent de générer aussi des fichiers contenant des informations, c'est un mécanisme différent, spécifique à ces options.
Exemples Je reprends maintenant l'exemple 1 du paragraphe 2C pour illustrer l'utilisation en ligne de commande.
Au prompt C:\Tool> écrivez : C:\Tool\exiftool "-IPTC:Caption-Abstract<Filename" *.jpg Cette commande contient : L'appel à ExifTool, une opération sur des métadonnées dans les guillemets, et enfin *.jpg qui définit les fichiers à traiter.
L'opération sur les métadonnées consiste à recopier le nom de la photo dans le champ Légende iptc : on retrouve les trois éléments : -DonnéeCible Opérateur DonnéeSource sans espaces de séparation.
L'élément important en mode commande, c'est l'indication des fichiers à traiter, ici *.jpg
Dans cet exemple, ExifTool va traiter tous les fichiers ayant l'extension .jpg du dossier actuel (Tool)
On aurait pu aussi spécifier l'emplacement des photos, par exemple : C:\Tool\exiftool "-IPTC:Caption-Abstract<Filename" "C:\Tool\tests" Dans ce cas, ExifTool va traiter toutes les images du dossier Tool\tests (tous les fichiers images qui supportent ce type de traitement)
Retenez que dans ce mode d'utilisation, il faut généralement spécifier précisément l'ensemble d'images que l'on veut traiter.
Pensez aussi à utiliser des guillemets (doubles pour Windows, quotes pour Linux et Mac Os) pour encadrer les diverses commandes.
Si vous avancez dans l'utilisation d'ExifTool, il est vrai qu'on peut faire plus et plus vite en ligne de commande ... mais ceci est une autre histoire.
En fait il y a une multitude de traitements possibles, je ne peux pas tout détailler ici.
2E Utilisation d'ExifTool avec XnViewMP
J'ai écrit un gros paragraphe sur l'utilisation d'ExifTool dans la page consacrée à XnViewMP,
plus précisément dans le chapitre 11, paragraphe 11N.
Vous aurez là-bas plusieurs exemples illustrés, je ne laisse ici que cette petite présentation.
L'utilisation la plus directe d'ExifTool dans XnViewMP consiste à afficher l'onglet ExifTool dans le panneau Informations, ce qui permet de
visualiser toutes les métadonnées vues par ExifTool.
Les noms des champs affichés diffèrent quelque peu de ceux utilisés par XnViewMP, puisqu'ils ont dans ce cas l'orthographe officielle non francisée.
XnViewMP offre en outre la possibilité d'utiliser ExifTool avec des paramètres, à travers le menu "Outils, Ouvrir avec ..."
Ca permet donc de sélectionner confortablement des lots d'images avec XnviewMP, puis de leur appliquer un traitement ExifTool spécifié par les paramètres.
Il y a plusieurs exemples illustrés dans la doc XnViewMP , pour écrire les fichiers sidecar, recopier d'anciennes métadonnées, ou récupérer des mots-clés exif etc .
(17/11/2023) XnViewMP permet de sélectionner ou filtrer commodément un lot d'images de façon très visuelle.
On peut profiter de cette possibilité, et lancer sur les fichiers sélectionnés des traitements batch, à partir de la fonction "Ouvrir avec" de XnViewMP
On va donc préparer un fichier batch, contenant la variable %* qui va énumérer les fichiers, et il suffira de pointer le batch dans la fonction "Ouvrir avec".
Le but est de réaliser des taches complexes en trois phases :
- Sélectionner les fichiers visuellement avec XnViewMP
- Lancer un traitement batch (commandes Windows) qu'on aura préparé et qui va s'effectuer sur chaque fichier
- Utiliser ExifTool à l'intérieur de ce traitement
Voici un exemple de fichier batch qui afiche la métadonnée "IPTC:City" de chaque photo, et la met dans une variable !resultat!
Dans cet exemple, je n'ai pas inclus de traitement spécifique sur cette variable, mais seulement son affichage.
Remarquez ici l'utilisation de l'option -p qui "force" l'affichage simple du contenu de la métadonnée IPTC:City (-p "$iptc:city")
@ echo off
setlocal enabledelayedexpansion
REM Boucle à travers tous les fichiers passés en paramètre (%*)
for %%f in (%*) do (
    for /f "delims=" %%i in ('C:\Tool\exiftool.exe -m -p "$iptc:city" %%f') do (
        set "resultat=%%i"
        echo !resultat!
        REM On pouvait afficher aussi ceci : echo Pour la photo "%%f" la ville est : !resultat!
        REM Ici vous pouvez donc realiser un traitement utilisant la variable !resultat!
        )
    )
endlocal
pause
2F Utilisation d'ExifTool avec FastPhotoTagger
FastPhototagger est un GUI (Graphical User Interface), c'est à dire une interface graphique pour utiliser ExifTool.
Une brève présentation du logiciel ici,
la notice ici,
et le site de l'éditeur ici.
FastPhototagger est conçu pour entrer rapidement des métadonnées dans vos images, et pour faire des recherches et sélections
dans ces métadonnées (qu'il peut organiser en base de données) à l'aide de requêtes, sans avoir à utiliser de lignes de commandes.
Je ne détaille pas plus ici l'utilisation ordinaire de FastPhotoTagger, et vous renvoie donc à la notice que j'ai écrite.
Depuis la version 3.2, FastPhotoTagger offre une fenêtre de commande Exiftool. On ouvre cette fenêtre en tapant Ctrl E
C'est un simple tableau dans lequel on peut ajouter ou modifier ses propres informations.
La partie haute du tableau permet de noter des options, la partie basse des paramètres (noms de métadonnées, fichiers en entrée ou en sortie etc)
Chaque ligne du tableau est donc rédigée par vos soins, et dans la colonne de droitre on peut ajouter des commentaires ou descriptions.
Chaque ligne comporte aussi une petite case à cocher.
Exemples fournis par l'auteur (cliquez l'image pour aller sur le site)
En haut de l'écran sont listées les images auxquelles le traitement ExifTool sera appliqué;
Pour l'utilisation, sélectionnez des images, cochez des cases options, des cases paramètres et cliquez "Suivant"
2G Utilisation d'ExifTool avec Metadata++
(15/10/2019) Metadata++ est également une interface graphique pour ExifTool, et des mises à jour sont régulièrement publiées sur le site Logipole.
Voir par exemple les nouveautés, nombreuses en 2019.
Ce logiciel permet de faire plein de choses intéressantes, mais je suis loin d'en maitriser l'utilisation.
Il faudra que j'en fasse une petite description ici, assortie de quelques exemples ... doc à faire !
2H Utilisation d'ExifTool avec d'autres logiciels
(21/04/2021) De nombreux logiciels utilisent ExifTool.
Je viens de citer XnViewMP, FastPhotoTaggger, Metadata++ , auxquels il faut ajouter ExifToolGUI V5 que j'ai cité en introduction.
Ces logiciels sont généralistes, c'est à dire qu'ils permettent un bonne diversité de traitements sur les métadonnées.
D'autres logiciels utilisent aussi ExifTool, mais sont plus spécialisés sur un domaine spécifique d'utilisation des métadonnées.
Par exemple, GeoSetter et PicaGeoTag, sont deux excellents logiciels pour travailler sur la géolocalisation des photos.
Vous trouverez une liste de logiciels utilisant ExifTool avec une brève description dans ma page Logiciels de gestion des métadonnées Et dans la page officielle ExifTool, vous trouverez enfin une liste très complète de logiciels utilisant ExifTool.
ooooooooooooooooooo
3 Exemples
Pour les premiers exemples ci-dessous, on va utiliser la méthode des raccourcis décrite au chapitre 2B.
Pour chaque exemple, je vous conseille de créer un nouveau raccourci, et de lui attribuer un nom mnémonique.
Puis, avec un clic-droit, vous ouvrez les propriétés du raccourci, et, dans la case cible, vous ajoutez les paramètres à la suite du nom exiftool.exe
Observez que chaque paramètre commence par un tiret, précédé d'un espace.
3A Exemples simples
Exemple 1 Nom du raccourci : IPTCtoEXIF
Cible : C:\Tool\exiftool.exe -k
-exif:xpcomment<iptc:caption-abstract -exif:copyright<iptc:copyrightnotice -exif:xpauthor<iptc:by-line Utilisation : glisser des photos contenant des données IPTC sur le raccourci.
Cet exemple permet de recopier trois métadonnées IPTC vers les (anciens) champs EXIF correspondants
Exemple 2 Nom du raccourci : NAMEtoTITLE
Cible : C:\Tool\exiftool.exe -k -IPTC:Headline<${FileName;s/\.[^.]*$//} Pour mettre le nom de fichier sans extension dans le titre de l'image.
Utilisation : glisser des photos sur ce raccourci pour que le nom du fichier soit copié dans la métadonnée titre iptc.
Ignorez pour le moment tous les caractères exotiques entourant Filename, il s'agit d'un traitement,
expliqué plus loin.
Exemple 3 Nom du raccourci : XMPtoSIDECAR
Cible : C:\Tool\exiftool.exe -k -o -xmp %d%f.xmp Utilisation : glisser des photos contenant des données xmp sur le raccourci.
Cette commande va avoir pour effet de créer un fichier XMP sidecar contenant les données XMP qui étaient dans l'image.
Exemple 4 Décalage de date et heure.
Dans cet exemple, je souhaite ajouter 12 ans à la date indiquée par mon appareil photo qui était réglée par erreur sur 2008 ...
En paramètres, on va spécifier les trois champs exif qu'on souhaite modifier, ainsi que le décalage à appliquer :
Nom du raccourci : Add12Years
Cible : C:\Tool\exiftool.exe -k
-ModifyDate+="0012:00:00 00:00:00" -DateTimeOriginal+="0012:00:00 00:00:00" -CreateDate+="0012:00:00 00:00:00" Remarquez que l'opérateur utilisé pour un décalage positif est +=     . Si on veut soustraire , on utilisera -=
La métadonnée "ModifyDate" est toujours une métadonnée Exif (la date système de modification de fichier est différente, c'est File:FileModifyDate )
Le format de date et heure à utiliser est AAAA:MM:JJ HH:MM:SS , et il faut utiliser des guillemets, au moins pour Windows (sous la touche 3 du clavier)
Si vous voulez faire juste un décalage de 5 minutes et 8 secondes par exemple, vous pouvez utiliser un format plus court : HH:MM:SS ( exemple "00:05:08")
Et enfin, vous pouvez toujours ajouter le paramètre -overwrite_original si vous êtes sûr de la manip ...
Exemple 4bis (26/12/2020) Utiliser le nom de fichier pour dater les photos
De nombreux appareils, notamment les smartphones, incluent la date de réalisation de la photo dans le nom du fichier.
C'est aussi le cas de certains photographes et de certaines applis comme Whatsapp ou Face de bouc.
Par exemple les photos sont nommées sous la forme IMG_20201231_220515_HDR.jpg
Si la photo a été manipulée, recadrée, déplacée ... elle a pu perdre ses dates système ou exif, surtout sur les systèmes Android.
Le nom de fichier doit contenir, dans l'ordre, 4 chiffres pour l'année, 2 pour le mois et 2 pour le jour , qui vont constituer la date ;
Il faut également au moins 4 chiffres pour l'heure, les deux premiers seront interprétés comme heures, les deux autres comme minutes et si ils existent, deux autres comme secondes.
Les lettres minuscules ou majuscules sont ignorées, ainsi que les caractères spéciaux.
La commande ExifTool à utiliser est assez simple
Nom du raccourci : NameToDate
Cible : C:\Tool\exiftool.exe -k "-allDates<Filename" Utilisation : Glisser des images dont le nom inclut une date, sur le raccourci.
La date présente dans le nom de fichier sera répercutée dans "la plupart" des dates Exif , pour chaque photo.
Les dates fichiers système ne sont pas affectées (ni FileModifyDate, ni FileCreateDate, ni FileAccessDate).
Dans la plupart des cas, ExifTool renvoie un message d'erreur sans conséquence. Vérifiez juste la présence du message <n> files updated à la fin du compte rendu.
Si vous avez besoin de modifier aussi les dates système, il faut ajouter à la commande "-FileCreateDate<Filename" ou "-FileModifyDate<Filename"
J'ai cru comprendre qu'on peut spécifier des formats de date à traiter afin d'éviter les messages d'erreur, c'est à étudier si le format de date que vous avez n'est pas celui décrit ici.
3B Utilisation d'un fichier de config
ExifTool peut recevoir des informations depuis un fichier de configuration.
Le but est de réaliser des traitements, qui peuvent être complexes (je n'ai pas étudié ce sujet) et de renvoyer le résultat à ExifTool.
Il faut alors donner à ExifTool le nom de ce fichier de configuration, en lui spécifiant avec le parmètre -config
Si le fichier de configuration se nomme aaa.txt, et s'il est placé dans le même dossier, ça donnera : exiftool -config aaa.txt
Si on utilise un raccourci, on mettra en cible : C:\Tool\exiftool.exe -config "aaa.txt" -k Ou mieux : C:\Tool\exiftool.exe -config "C:\Tool\conf\aaa.txt" -k en précisant l'emplacement exact du fichier de config.
Le paramètre -config doit être situé en premier parmi les diverses options passées à exiftool (afin qu'il soit évalué en premier).
Les guillemets sont là au cas où le chemin du fichier contiendrait des espaces.
Dans les fichiers de configuration, les noms de métadonnées sont sensibles aux majuscules/minuscules. Verifiez leur orthographe exacte pour les utiliser.
Le fichier .ExifTool_config Le nom par défaut du fichier de configuration est .ExifTool_config (avec un point en début).
C'est à dire que si le fichier de configuration porte ce nom, il est inutile d'utiliser le paramètre -config
L'ennui, c'est que ce fichier de configuration est systématiquement lu par ExifTool, même quand on n'en a pas besoin, en général j'ai donc évité de l'utiliser.
Cependant, un premier cas d'utilisation est celui où vous souhaitez que ExifTool gère des métadonnées non standard, voyez la fin de l'exemple 8 un peu plus loin.
Un autre cas d'utilisation est le suivant :
- Vous travaillez très souvent sur le même ensemble de métadonnées, et vous trouvez cette liste un peu longue à taper au clavier.
Par exemple celles-ci : IPTC:By-Line, XMP-dc:Creator, IPTC:CopyrightNotice, XMP-dc:Rights
Vous pouvez vous créer un raccourci personnalisé, que vous nommez par exemple MetaPersoDroits, et qui s'utilisera exactement comme une métadonnée (Source)
Rédigez un fichier .ExifTool_config comme ceci : (A vérifier)
%Image::ExifTool::UserDefined::Shortcuts = (
MetaPersoDroits => ["IPTC:By-Line","XMP-dc:Creator","IPTC:CopyrightNotice","XMP-dc:Rights"],
); Dorénavant, il vous suffira d'utiliser MetaPersoDroits dans les commandes ExifTool gérer les 4 métadonnées ensemble.
Note : il n'est pas toujours facile de nommer un fichier avec un point en début de nom sous Windows.
Le plus simple est d'utiliser "Enregistrer sous ..." avec le BlocNotes, et en enlevant l'option "Type : Fichier texte (txt)"
Exemple 5     Découpage de la métadonnée XpKeywords
Le fichier de configuration que je vais utiliser dans ce nouvel exemple va servir à "découper" des anciens mots clés EXIF, constitués d'une seule chaine de caractères.
On va nommer ce fichier le fichier de configuration : decoupage.txt
La métadonnée Exif:XpKeywords, en effet, ne pouvait contenir qu'un seul mot.
Or, dans le passé, on a voulu y faire entrer plusieurs mots clés, séparés
par une virgule et un espace, de la forme "paysage, plage, parasol"
Ensuite, les paramètres passés à ExifTool vont ranger les différents mots clés dans les métadonnées IPTC (IPTC:keywords) ou XMP (xmp-dc:subject)
Voici les paramètres qu'on va ajouter pour la partie IPTC : -config c:\Tool\conf\decoupage.txt -iptc:keywords<mykeywords -overwrite_original Et ceux à ajouter dans le cas des mots-clés XMP : -config c:\Tool\conf\decoupage.txt -xmp-dc:subject<mykeywords -overwrite_original
Ne vous étonnez pas de la présence, dans ces deux commandes, d'une métadonnée "mykeywords" : c'est un nom arbitraire utilisé dans le fichier de config.
Les deux commandes vont donc envoyer les mots-clés récupérés dans "mykeywords" vers les iptc:keywords ou dans les xmp-dc:subject
Voici le contenu du fichier de configuration pour cet usage :
decoupage.txt
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
MyKeywords => {
Require => 'XPKeywords',
ValueConv => 'my @v = split(", ",$val); \@v',
},
}
);
1; #end Vous allez coller ces 9 lignes dans le fichier decoupage.txt , et enregistrer. (Merci à Phil Harvey pour ce script !) Tout est prêt.
Sélectionnez des photos contenant des anciens mots clés EXIF:XPKeywords, et lancez l'une ou l'autre des commandes qui viennent d'être présentées, pour distribuer les mots clés dans les métadonnées IPTC, ou XMP.
Et enfin les raccourcis complets correspondants :
Nom du raccourci : KeywordEXIFtoIPTC
Cible : C:\Tool\exiftool.exe -config c:\Tool\conf\decoupage.txt -k -iptc:keywords<mykeywords Nom du raccourci : KeywordEXIFtoXMP
Cible : C:\Tool\exiftool.exe -config c:\Tool\conf\decoupage.txt -k -xmp-dc:subject<mykeywords Remarquez que le paramètre -config doit être situé en premier.
Utilisation : Glisser des photos contenant un mot clé exif:xpkeywords composé de plusieurs mots clés, sur le raccourci.
Ces mots clés seront rangés en liste dans les métadonnées IPTC:Keywords ou XMP-dc:Subject.
Exemple 6     Utiliser les noms de dossiers comme mots-clés.
Passer d'un classement thématique par dossiers de vos photos, à un classement par mots clés.
La manip va consister tout simplement à copier les noms des dossiers dans les mots clés.
Prenons un exemple où les photos sont rangées comme dans l'illustration ci-dessous.
A l'issue du traitement, la photo DSCN000.jpg contiendra les mots-clés Tool Photos Vacances Hiver Raquettes ...
On va encore utiliser la même méthode, un raccourci pour lancer ExifTool avec un minimum de paramètres, et un fichier de config pour le traitement.
Le fichier de config se nommera dirtree.txt
Nom du raccourci : DIRtoAll Keywords
Cible : C:\Tool\exiftool.exe -config C:\Tool\conf\Dirtree.txt -k -r -overwrite_original "-iptc:keywords+<dirtree" "-xmp-dc:subject+<dirtree" Dans cette commande, le paramètre -config est situé en début (obligatoire), ensuite il y a -k et -r expliqués au chapitre 4;
Le paramètre -overwrite_original est aussi expliqué dans le chapitre 4, et conditionne lourdement la remarque 3 ci-dessous.
Puis les paramètres qui déclenchent la recopie des données obtenues par "dirtree" dans les mots clés iptc puis xmp.
L'opérateur qui permet d'ajouter des mots clés à ceux éventuellement présents est +<
Le fichier de config, qui va découper l'arborescence des dossiers en mots clés séparés est le suivant
Fichier dirtree.txt :
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
DirTree => {
Require => 'Directory',
ValueConv => q{
# excluding all directories before "Tool"
$val =~ s(.*Tool[\\/])();
# split directory into components
my @parts = split '/', $val;
# remove empty first component (if "/" was the first character)
shift @parts if @parts and not $parts[0];
return \@parts;
},
},
},
);
1; #end
Remarque 1 : j'ai pris pour exemple une arborescence de dossiers qui se nommerait par exemple C:\Tool\Photos\Vacances\etc
Les lignes 8 et 9 permettent d'éliminer C: et Tool comme mots clés, et de garder seulement ce qui suit (Photos, Vacances, etc) comme mots clés
Vous devrez remplacer Tool dans la ligne 9 par un nom de dossier qui contient vos propres photos (ou supprimer toute la ligne si vous voulez que
tout le chemin figure dans les mots clés)
Remarque 2 : Faites des tests sur des petits lots d'images copiées dans un dossier de test.
Remarque 3 : J'ai mis le paramètre -overwrite_original dans le raccourci, donc vous devez travailler obligatoirement
sur une copie de vos photos, il est trop risqué de le faire sur les originaux.
Et si vous êtes téméraire, le paramètre -r applique la récursivité, c'est à dire que tous les sous-dossiers seront traités ...
Il vous reste à glisser le dossier d'images sur le raccourci, et hop le travail se fait d'un coup.
Par la suite, utilisez un logiciel qui gère les mots clés (XnviewMP, Lightroom, Picasa, ...), réglez les options d'importation de mots clés et le tour est joué.
Pour XnViewMP, il faut que j'écrive un paragraphe de synthèse sur ce sujet.
Voir une autre solution Et si c'est le nom de la photo que vous voulez recopier en un mot clé, ce sera une simple copie de tag du genre -iptc:keywords+<filename
ou "-iptc:keywords+<${FileName;s/\.[^.]*$//}"
Exemple 7     Reprendre les identifications de personnes de Picasa.
Ce paragraphe devra être complètement repensé. J'ai eu de nouvelles informations, et il faudra retravailler ce sujet de marquage des noms de personnes.
(13/11/2018) Dans cet exemple, l'idée est de récupérer l'identification des visages faite par le logiciel Picasa, pour en faire des métadonnées normalisées.
Pour fonctionner, la manip décrite ici nécessite donc la présence d'un fichier .picasa.ini dans chaque dossier traité. (habituellement, Windows cache ce type de fichiers : voir Outils, options des dossiers, affichage)
On peut tout d'abord faire un détour par "AvPicFaceXmpTagger" qui est un logiciel dédié à cette tâche, auquel j'ai consacré un paragraphe dans cette page.
J'ai également décrit l'ensemble de l'opération dans le paragraphe 11Q du tuto XnViewMp Ce logiciel (AvPicFaceXmpTagger) est capable d'écrire des mots clés IPTC, XMP, et même les mots clés hiérarchisés XMP-LR, en utilisant ExifTool, avec son propre fichier de config, visible dans un écran du logiciel.
Mais voyons ici comment faire la manip uniquement avec ExifTool ....
Le fichier "picasa_faces.config" Si AvPicFaceXmpTagger peut le faire, d'autres l'ont fait aussi, simplement en écrivant "à la main" un fichier de config pour ExifTool pour cette tâche .
Ce fichier que l'on peut télécharger, est disponible sur le site Sourceforge.net : picasa_faces.config Dans ce fichier, assez long et compliqué, il y a une ligne que vous devez modifier, c'est celle qui localise un fichier important de Picasa.
La ligne en question, qui se situe vers la ligne 75, est : my $contactXML = 'C:/Users/MainUser/AppData/Local/PicasaData/Google/Picasa2/contacts/contacts.xml'; Il faut tout d'abord modifier dans cette ligne le mot MainUser, en mettant à la place votre nom d'utilisateur Windows.
Vérifiez, en parcourant votre disque système, si le fichier contacts.xml de Picasa est bien à cet emplacement, et si ce n'est pas le cas, corrigez la ligne et enregistrez.
Dans mon cas, j'ai dû modifier la ligne en écrivant : my $contactXML = 'C:/Users/M/AppData/Local/Google/Picasa2/contacts/contacts.xml'; (n'omettez pas le point virgule à la fin, mettez votre nom d'utilisateur après /Users/ et vous pouvez utiliser des "slash" / ou "antislash" \ au choix.)
Le rôle de ce fichier de config est de récupérer les noms des personnes détectées par Picasa, et de les mettre dans la variable "PicasaRegionNames" (c'est pas moi qui ai choisi ce nom)
Réglages pour ExifTool En reprenant l'exemple d'emplacement des fichiers que j'indique depuis le début, mettez ce fichier picasa_faces.config dans le dossier C:\Tool\conf .
Voici une première version de la syntaxe à utiliser dans un raccourci pour réaliser l'opération :
Nom du raccourci : PicasaFacesTo keywords
Cible : C:\Tool\exiftool.exe -config C:\Tool\conf\picasa_faces.config -k -r "-xmp-dc:subject+<PicasaRegionNames"
La première partie de cette commande lance ExifTool avec le fichier de config précité et les options habituelles -k -r
Ensuite, l'affectation du contenu de la métadonnée PicasaRegionNames fournie par le fichier de config, dans les mots clés xmp, se fait avec l'opérateur +< (ajout)
Si on souhaite ajouter les mêmes mots clés dans le groupe IPTC, on ajoutera : "-iptc:keywords+<PicasaRegionNames" à la commande.
Ce qui donne :
Nom du raccourci : PicasaFacesTo Keywords
Cible :
C:\Tool\exiftool.exe -config "C:\Tool\conf\picasa_faces.config" -k -r "-xmp-dc:subject+<PicasaRegionNames" "-iptc:keywords+<PicasaRegionNames"
Utilisation : Glisser un dossier de photos déjà traité par Picasa, sur le raccourci PicasaFacesTo Keywords.
Enlever des doublons Petit écueil, si les images contenaient déjà des mots clés avec les noms des personnes, parce-que ce travail avait été partiellement fait auparavant, on va avoir des doublons.
Il va donc falloir faire une deuxième phase pour cela.
Il existe une commande pour éliminer les doublons, NoDups, elle s'utilise dans une expression délimitée par des accolades, et nécessite l'ajout de l'option -sep "##"
Pour les mots clés iptc,ça donne : C:\Tool\exiftool.exe -sep "##" "-iptc:keywords<${iptc:keywords;NoDups}" Et si on souhaite éliminer les doublons dans les trois groupes de mots clés, le raccourci pour l'opération complète sera :
Nom du raccourci Picasa NoDups
C:\Tool\exiftool.exe -sep "##" "-xmp-lr:hierarchicalsubject<${xmp-lr:hierarchicalsubject;NoDups}" "-iptc:keywords<${iptc:keywords;NoDups}" "-xmp:subject<${xmp:subject;NoDups}" -k
Remarques :
- Il me semblait qu'on pouvait combiner ces deux phases en une seule commande, mais je n'ai pas réussi à le faire fonctionner.
- Ces opérations n'affectent en rien d'autres mots clés qui pouvaient exister dans les photos. Seuls les visages détectés par Picasa sont concernés.
- Je n'ai pas mis le paramètre -overwrite_original. A vous de juger si vous prenez le risque ... et notez qu'en faisant deux passages c'est plus compliqué à gérer.
- Il reste à étudier le cas des mots clés hiérarchisés LR, ce sera l'occasion d'introduire une nouvelle possibilité, décrite au chapitre 3C suivant.
Fig 13 Raccourcis Picasa
(10/03/2019) Exemple 8     Créer des métadonnées personnalisées
On peut utiliser un fichier de configuration d'ExifTool pour lire et écrire des métadonnées personnalisées.
A priori, seul le groupe XMP permet d'avoir des métadonnées perso; je ne crois pas que ce soit possible en IPTC.
En fait c'est possible aussi en EXIF, mais laissons ça aux constructeurs de matériel, qui y mettent déjà une belle pagaille.
Mes premiers tests consistent à utiliser des métadonnées personnalisées dans le sous-groupe XMP-xmp.
J'ai choisi ce sous-groupe car un exemple de fichier de config est fourni dans le site de l'auteur: https://exiftool.org/config.html Il est peut-être possible de créer son propre sous groupe, ce serait plus raisonnable, mais je n'ai pas essayé. (XMP:Perso par exemple.)
Le fichier proposé dans le lien est très complet (et très complexe), j'en ai donc écrit une version simplifiée pour mon exemple :
Fig 14 Fichier de config pour métadonnées perso
Vous trouverez ce fichier sous forme texte un peu plus bas, pour pouvoir le copier.
J'ai donc défini dans ce fichier trois nouvelles métadonnées : XMP-xmp:Marque, XMP-xmp:Couleur, XMP-xmp:Puissance
Supposons que ce fichier de config se nomme perso.txt
Pour inscrire une valeur, par exemple Renault, dans la métadonnée "Marque", la syntaxe ExifTool sera :
C:\Tool\exiftool.exe -config "C:\Tool\conf\perso.txt" -XMP-xmp:Marque="Renault" -k
On va créer un raccourci nommé "Renault" par exemple, pour attribuer la marque Renault à un lot de photos.
Voici les étapes :
Placez d'abord dans le dossier C:\Tool\conf le fichier de configuration   perso.txt   contenant les lignes suivantes :
#---- Ajout de tags personnalisés dans le groupe XMP-xmp
%Image::ExifTool::UserDefined = (
'Image::ExifTool::XMP::xmp' => {
Couleur => { Groups => { 2 => 'Author' } },
Marque => { Groups => { 2 => 'Author' } },
Puissance => { Groups => { 2 => 'Author' } },
},
);
1; #end
Puis créez un raccourci vers ExifTool :
Nom du raccourci : Renault
Cible : C:\Tool\exiftool.exe -config "C:\Tool\conf\perso.txt" -XMP-xmp:Marque="Renault" -k Fichier de config utilisé: perso.txt
Utilisation : glissez des photos sur le raccourci pour leur attribuer la métadonnée personnalisée "Marque", avec la valeur "Renault".
Le résultat est intéressant, mais il n'est pas bien pratique d'utiliser de cette façon ExifTool pour entrer des métadonnées sur un grand nombre de photos.
Il faudrait faire autant de raccourcis que de marques, de couleurs, etc ...
Je vais enrichir cet exemple en proposant d'utiliser un autre logiciel qui va pouvoir tirer parti de cette fonctionnalité d'ExifTool.
L'exemple va porter sur FastPhotoTagger, ce logiciel étant une sur-couche graphique pour ExifTool (en anglais Graphic User Interface : GUI)
(Il y a une notice pour FastPhotoTagger ici)
Lors de son premier démarrage, FastPhotoTagger vous demande de préciser l'emplacement de ExifTool : je vous conseille de mettre une
copie d' exiftool.exe dans le même dossier que le programme FastPhotoTagger lui même, ce qui vous permet de gérer tous les éléments au même endroit (versions, paramètres etc)
Autre avantage dont nous aurons besoin, c'est de pouvoir mettre en plus le fichier de config de cet exemple au même endroit.
Pour ExifTool, on a vu qu'il y a un nom de fichier par défaut pour le fichier de config qui est .ExifTool_config, et ce fichier est sytématiquement utilisé.
On va donc ouvrir notre fichier de config "perso.txt" avec le bloc notes, et l'enregistrer sous le nom .ExifTool_config, dans le dossier de FastPhotoTagger.
Fig 14b Fichier de config pour métadonnées perso
Dorénavant, à chaque appel d'ExifTool, FastPhotoTagger utilisera les paramètres mis dans le fichier de config, pour gérer nos trois métadonnées personnalisées.
On va ensuite déclarer nos trois "nouvelles" métadonnées dans l'écran "Options, Métadonnées" de FastPhotoTagger
Fig 15 Paramétrage pour ces trois métadonnées personnalisées
Et on retrouve ces trois champs dans l'écran principal de FastPhotoTagger, où on va pouvoir les écrire, modifier etc.
Fig 16 Métadonnées perso dans FastPhotoTagger
Il ne vous reste plus qu'à adapter cet exemple à vos besoins ...
Mais si vous y investissez beaucoup de temps, n'oubliez pas que ces métadonnées personnalisées ne serviront probablement jamais à quelqu'un d'autre que vous ...
Je rappelle que FastPhotoTagger peut en plus générer une base de données, qui permet de faire facilement tous les tris et recherches sur les métadonnées de votre choix.
Il faut que je vérifie aussi une chose : il me semble que le logiciel Metadata++ permet de gérer commodément des métadonnées personnalisées ...
(17/05/2023) Exemple 9     Utiliser des métadonnées non gérées nativement dans ExifTool
Lorsque vous listez (avec -a) des métadonnées avec l'option -u ou -U (de type unknown, inconnu), il en apparaît un grand nombre.
En effet, dans le groupe (-G) MakerNotes, chaque fabricant a inclus un grand nombre de données, souvent numérotées, du genre : Sony_0xb04c
Pour pouvoir utiliser ces données, il faut utiliser l'option -u ou -U avec ExifTool.
Pour les logiciels comme FastPhotoTagger ou ExifToolGUI, la méthode pour passer cette option à ExifTool est la suivante :
- Créez un fichier .ExifTool_config avec le Bloc Notes, contenant les lignes suivantes :
%Image::ExifTool::UserDefined::Options = (
Unknown => 1, # ExifTool to include unknown tags
);
1; #end - Enregistrez sous ... .ExifTool_config , en enlevant l'option "Type : fichier texte (txt)" et en choissant le même dossier qu'exiftool.exe
Voilà, à partir de là, ExifTool utilisera l'option de gestion des métadonnées "unknown"
(Inspiré de https://www.dpreview.com/forums/thread/3454283)
3C Utilisation d'un fichier d'arguments
Cette fonction est moins complexe à utiliser que les fichiers de configuration ; il s'agit seulement de ranger dans un fichier les options et paramètres destinés à ExifTool.
J'ai utilisé cette fonctionnalité pour diminuer la longueur d'une commande, car il y a une limite de longueur dans les raccourcis Windows.
Il y a d'autres avantages ; le premier c'est que les informations sont plus clairement lisibles et accessibles dans un tel fichier, plutôt que dans les propriétés
d'un raccourci. Un autre avantage, c'est de pouvoir laisser ce fichier ouvert dans le bloc notes, et d'ajuster par tests successifs son contenu.
La commande qui appelle le fichier d'arguments est la suivante : -@ "C:\Tool\conf\arguments.txt" en supposant que vous ayez mis le fichier "arguments.txt" dans un dossier C:\Tool\conf\.
Il y a quelques règles à respecter dans ce fichier d'arguments qui est organisé en lignes, notamment de ne pas mettre de guillemets autour des commandes.
Exemple 10 (anciennement exemple 8)
(20/11/2018)
Je vais reprendre l'exemple 7 Picasa du paragraphe précédent. Il aurait mieux valu prendre un autre exemple plus simple, mais j'ai celui-ci sous la main, il est tout récent.
Dans cet exemple 8 je vais combiner plusieurs opérations pour pouvoir inclure les mots clés hiérarchisés à l'opération de l'exemple 7.
La construction du raccourci On va donc cumuler l'appel à un fichier de configuration (C:\Tool\exiftool.exe -config C:\Tool\conf\picasa_faces.config) comme précédemment
Et, nouveauté, l'appel à un fichier d'arguments (-@ "C:\Tool\conf\arguments.txt")
(la forme finale du raccourci sera présentée un peu plus bas)
Le fichier d'arguments Mon objectif, dans cet exemple, est d'ajouter plusieurs ensembles de mots clés dans trois groupes de métadonnées : iptc, xmp et xmp-lr. (plus rigoureusement : iptc, xmp-dc, xmp-lr)
Je vais donc mettre un certain nombre de commandes dans le fichier d'arguments:
Les deux premières lignes correspondent à l'exemple 7 du paragraphe précédent, pour les mots clés iptc et xmp.
-xmp-dc:subject+<PicasaRegionNames#
-iptc:keywords+<PicasaRegionNames#
Les troisième et quatrième lignes, c'est un test qui vérifie si au moins une personne a été détectée par Picasa :
-if
"$PicasaRegionNames" Ce test est nécessaire pour les trois lignes suivantes. Il faut éviter d'ajouter le mot clé "famille" à tort aux photos qui ne comportent aucune personne.
Les trois suivantes ajoutent donc le mot clé "famille" car je souhaite que ce mot clé accompagne tous les noms de personnes détectés par Picasa.
-xmp-dc:subject+=famille
-iptc:keywords+=famille
-xmp-lr:hierarchicalsubject+=famille
Et enfin les deux dernières lignes illustrent bien l'idée de mettre dans ce fichier toutes les options destinées à ExifTool : -k
et -r
Le fichier arguments.txt, que vous pouvez créer avec le bloc notes, va donc contenir ces 9 lignes : -xmp-dc:subject+<PicasaRegionNames#
-iptc:keywords+<PicasaRegionNames#
-if
"$PicasaRegionNames"
-xmp-dc:subject+=famille
-iptc:keywords+=famille
-xmp-lr:hierarchicalsubject+=famille
-k
-r
Enregistrez ce fichier arguments.txt dans le dossier C:\Tool\conf\.
Vous pouvez adapter ce fichier à votre propre traitement en supprimant les 5 lignes traitant du mot clé "famille" si vous préférez (voir les remarques, en bas)
Ca se complique Il manque à ce stade l'écriture des noms de personnes dans les mots clés hiérarchisés, mais ce n'est pas aussi simple que pour les IPTC ou XMP.
Cette écriture devra être faite avec la commande -api "Filter=s/^/Family|/" "-xmp-lr:hierarchicalsubject+<PicasaRegionNames" Je n'ai pas réussi à "faire entrer" cette commande dans le fichier d'arguments, c'est dommage pour la lisibilité, mais elle devra rester "dehors", dans le raccourci.
Le raccourci va donc contenir trois commandes qui ne peuvent pas figurer à l'intérieur du fichier d'arguments :
Nom du raccourci : PicasaFull Keywords
Cible : C:\Tool\exiftool.exe -config "C:\Tool\conf\picasa_faces.config" -@ "C:\Tool\conf\arguments.txt" -api "Filter=s/^/Family|/" "-xmp-lr:hierarchicalsubject+<PicasaRegionNames" A l'utilisation, on risque de rencontrer le même problème d'éventuels doublons dans les mots clés que dans l'exemple précédent.
Le raccourci Picasa NoDups de l'exemple 7 devra donc être aussi utilisé si vos mots clés contenaient déjà des noms de personnes.
Utilisation: Glisser un dossier contenant des photos de personnes identifiées par Picasa, sur le raccouci PicasaFull Keywords, puis répétez l'opération sur le raccourci Picasa NoDups.
Remarques - Je n'ai pas expliqué la troisième commande du raccourci -api n'ayant pas tout compris moi-même.
- L'ajout du mot clé "famille", en particulier dans les mots clés hiérarchisés, est conforme à la norme de hiérarchisation choisie par Adobe.
Par exemple avec deux personnes on écrit : "famille, famille|Jean, famille|Pierre". Dans les mots clés simples, IPTC ou XMP-dc, ça s'écrit aussi en trois mots clés : "famille, Pierre, Jean"
- Ce problème du mot clé racine ("famille", dans mon exemple) n'est pas résolu par le logiciel AvPicFaceXmpTagger. Personnellement, ça m'oblige à tout rectifier avec XnViewMP.
3D Exporter ou importer des métadonnées
(10/05/2020) Plusieurs internautes m'ont fait part du besoin d'exporter, puis d'importer des métadonnées sur des lots importants de photos.
Le but étant de faire une mise à jour massive, ou d'utiliser des fonctions de traitement ou de tri des métadonnées avec un tableur avant réimportation.
Une fois la mise à jour des métadonnées terminée dans le tableur, on va donc avec Exiftool "importer" ces métadonnées dans les photos.
Pour compléter les informations de ce chapitre, la page http://carlibrary.org/ExifTool.htm (en anglais) décrit ces opérations.
Exporter La méthode qui permet d'exporter les métadonnées d'un ensemble de photos est décrite dans les exemples 2 et 3 du chapitre 2C.
Cette méthode repose sur l'utilisation d'un fichier batch, mais les mêmes paramètres peuvent être utilisés aussi bien en ligne de commande.
Il s'agit simplement en fait de faire "afficher" les métadonnées par ExifTool, et de rediriger ces données vers un fichier (en utilisant l'opérateur de redirection ">" de windows)
Les données exportées pourront être formatées par ExifTool (avec l'option -csv) de manière à être facilement lues et exploitées dans un tableur.
Il y a probablement des options à éviter lors de l'exportation, comme -lang, et d'autres à spécifier, comme -n ou -csvDelim. A étudier.
Pour information, le même résultat peut être facilement obtenu avec XnViewMP, avec la fonction "Créer, Liste de fichiers", mais sur un échantillon moins riche de métadonnées.
Importer Une fois que vous avez exporté, puis travaillé et mis au point vos tableaux de métadonnées, on va les réinjecter dans les photos.
On se place donc du point de vue des photos qui vont recevoir ces métadonnées, pour parler "d'importation"
- Une première précaution consiste à choisir des noms différents et précis pour les fichiers exportés par ExifTool, et pour ces mêmes données une fois mises au propre dans un nouveau fichier.
Le tableau terminé, retravaillé, destiné à être importé dans les photos pourrait se nommer Meta-a-Importer.csv par exemple.
- La deuxième précaution (outre le fait d'avoir toujours une sauvegarde à l'abri) consiste à bien gérer les fichiers _original générés par ExifTool.
Bien qu'un peu lourde, la méthode apporte une certaine sécurité; allez lire les paragraphes concernant les options -Restore_Original et -Delete_Original
On va donc partir d'un tableau de données, calqué sur le modèle de ce qu'on a obtenu lors de l'exportation.
C'est à dire une ligne d'en-tête qui définit exactement les métadonnées à écrire, et une ligne du tableau pour les métadonnées destinées à chaque photo.
Voici un exemple de tableau de données :
Fig 17 Format de fichier CSV exporté / format pour importation.
Notez que la première colonne se nomme "SourceFile", qu'il n'y a pas d'espace autour des virgules, et que les métadonnées ont leur nom de groupe (IPTC:) pour éviter les ambigüités.
Il y a dans cet exemple une métadonnée vide, juste à gauche de "Chamrousse", correspondant à une légende vide pour cette photo.
Dans ce paragraphe, je désignerai les photos qui "dorment" dans votre disque dur et qui vont recevoir les métadonnées par le nom "photos cibles".
Pour les indiquer à Exiftool, il y aura plusieurs formulations possibles:
- Soit par type de fichiers, par exemple -ext jpg suivi du nom de dossier qui les contient.
- Soit simplement en spécifiant le nom du dossier cible
Les métadonnées énumérées dans UNE ligne du tableau sont destinées précisément à UNE photo, celle dont le nom est spécifié dans la première colonne.
Je nommerai les photos présentes dans cette première colonne "photos source"
Il peut y avoir des différences entre le nombre de photos source et destination ...
Si il y en a moins en source, ça signifie que des photos destination ne sont pas concernées et ne seront donc pas modifiées.
Si il y en a moins en destination, ExifTool renverra des compte-rendus d'erreur pour les photos qu'il n'aura pas trouvées et donc pas pu mettre à jour.
Si vous utilisez le format csv, lors de l'importation, si des champs de métadonnées sont vides dans votre tableau, ceux-ci ne seront pas écrits dans les photos, ils seront ignorés.
Pour forcer l'effacement d'une métadonnée dans les photos cibles, le champ doit contenir un - , et l'option -f d'ExifTool doit être utilisée.
Pour entrer des métadonnées en liste, par exemple des mots clés, il faut leur définir un séparateur avec l'option -sep
Par exemple la colonne xmp-dc:description contiendrait animal:mammifere:chat avec l'option -sep :
Pour ajouter des métadonnées dans une liste, utilisez -csv+= pour définir le nom du fichier csv
La syntaxe Pour provoquer l'écriture des métadonnées du tableau dans les photos cibles, la syntaxe est la suivante :
Cette commande peut être lancée en mode commande, ou mise dans la case "cible" d'un raccourci pour rester dans le style habituel des autres exemples.
- Il y a l'option -ext jpg qui précise que seules les photos jpg sont concernées (cela ne me parait pas indispensable, mais une petite sécurité en plus...)
- L'option -csv= qui est le point crucial de cette manip, et derrière laquelle on ajoute le nom du tableau contenant les données, avec les guillemets
Dans mon exemple, le tableau Meta-a-Importer.csv est placé dans le dossier C:\Tool\bat\
(30/11/2024) Dans certains cas, les métadonnées peuvent contenir des virgules; il faudra alors choisir un autre caractère comme délimiteur
On le spécifie avec l'option -csvDelim aussi bien en exportant qu'en important les données.
Exemples : Utilisez -csvDelim ";" pour le point-virgule. Et "\t", "\n", "\r","\\" représentent TAB CR LF \
- Et enfin le nom du dossier qui contient les photos à modifier, C:\Tool\Test dans cet exemple
Cette manip est résumée dans l'exemple 11 ci-dessous.
Exemple 11 Nom du raccourci : ImportDossierTest
Cible : C:\Tool\exiftool -ext jpg -csv="c:\Tool\bat\Meta-a-Importer.csv" "c:\Tool\Test\" Utilisation : Vérifier que le tableau c:\Tool\bat\Meta-a-Importer.csv soit correct, et double cliquer le raccourci.
Cet exemple permet d'écrire les métadonnées IPTC:Caption-Abstract, IPTC:City et IPTC:Headline du tableau préparé, vers les 5 photos du dossier c:\Tool\Test\
Pour aller plus loin Il faut étudier le Paragraphe 12
et le Paragraphe 26 des FAQ du site exiftool...
Il y a aussi le paragraphe consacré à l'option -csv dans le fichier de documentation générale ExifTool.
Et enfin une astuce (à manier avec précaution):
Pour provoquer l'écriture des mêmes métadonnées dans toutes les photos cibles, la première colonne peut contenir le nom *, et le tableau comportera alors une seule ligne de données.
ooooooooooooooooooo
4 Options
Conventions d'écriture Dans les chapitres précédents, j'ai suffisamment décrit la notion de raccourci, la façon d'enchaîner les paramètres avec des espaces,
la nécessité de bien considérer l'espace comme significatif, l'utilisation des guillemets, et l'écriture des chemins d'accès aussi bien pour
ExifTool que pour les divers fichiers de paramétrage.
Souvenez-vous que les paramètres sont lus de gauche à droite, et donc qu'il est important de placer ceux-ci dès le début de l'expression.
Dans ce chapire 4 qui décrit des paramètres ou options, je vais donc alléger l'écriture des exemples en écrivant uniquement les paramètres.
Je continue de sous entendre que l'appel à ExifTool et les options ou paramètres sont enregistrés dans la case "cible" d'un raccourci.
Cela induit que vous allez déposer des photos, ou des dossiers de photos sur le raccourci, photos sur lesquelles le traitement va être réalisé.
Par exemple cette case contiendra C:\Tool\exiftool -k -exif:all Dans le cas où vous utilisez ExifTool en ligne de commande, il faut généralement ajouter des indications sur les fichiers à traiter.
4A Quelques paramètres ou options
Voici quelques options auxquelles j'ai été confronté, ou que j'ai trouvées intéressantes.
Il en existe beaucoup, et je ne pense pas pouvoir les décrire toutes.
Pour ceux qui se débrouillent avec la langue anglaise, vous pouvez aller voir la documentation dans le site officiel Les options y sont triées par familles et la liste est complète.
L'option -k L'option -k permet de conserver la fenêtre d'ExifTool ouverte. C'est utile pour pouvoir lire les éventuels messages d'erreur.
Entre chaque paramètre précédé d'un tiret, il doit y avoir un espace donc pensez à bien séparer les paramètres avec des espaces.
Je propose d'ajouter systématiquement cette option dans les paramètres envoyés à exiftool.
-overwrite_original J'ai regroupé les informations liées à cette option dans le chapitre 5. Allez-y sans tarder ...
Le paramètre -r Récursivité
Ce paramètre introduit la récursivité, c'est la possibilité de lancer autant de fois le traitement qu'il y a de sous-dossiers.
C'est à dire qu'en sélectionnant un nom de dossier, ExifTool va traiter tout le contenu, y compris tous les sous-dossiers.
A manier avec prudence !
Le paramètre -P Préserver
Paramètre qui permet de ne pas toucher à la "date de modification" de l'image.
Certains utilisateurs se basent sur cette date pour connaître l'état d'avancement de leur travail, et donc souhaitent la préserver.
Perso, je considère que c'est pas bien fiable, n'importe quel logiciel (notamment Windows lui même) pouvant gérer ou modifier cette date à tout moment.
Le paramètre -p Print
Remarquez le p minuscule, c'est l'un des rares cas où ExifTool fait la différence entre majuscules (ci-dessus) et minuscules
Ce paramètre permet de préciser un nom de fichier texte qui doit contenir les métadonnées à utiliser, et des indications de mise en forme du résultat.
On va donc passer à ExifTool le chemin d'accès et le nom du fichier, de préférence avec des guillemets.
Exemple : exiftool -p "C:\Tool\conf\tableau.txt" Vous aurez donc préparé un fichier texte, "tableau.txt" contenant les données à afficher et la mise en forme des résultats.
Dans ce fichier texte, de nombreuses possibilités peuvent être utilisées pour la mise en forme, qu'il serait trop long de détailler ici.
Je vous renvoie à la
documentation de l'auteur pour l'écriture de ce fichier de formatage.
(04/02/2023) Notez tout de même l'extraordinaire puissance de cette option avec cet exemple :
Préparez un fichier Texte.txt contenant cette ligne : Fichier: $FileName - (f/$Aperture, ${ShutterSpeed}s, ISO $EXIF:ISO) Avec la commande exiftool -p Texte.txt DSC001.jpg vous obtenez un affichage comme ceci : Fichier: DSC001.jpg - (f/5.6, 1/60s, ISO 100)
Remarquez que les métadonnées sont précédées du symbole $, et que ${ShutterSpeed}s constitue un traitement de la métadonnée ShutterSpeed avec le $ et les accolades, permettant de l'afficher sous forme de fraction de secondes.
Vous pouvez donc vous préparer une panoplie de fichiers texte de ce type, contenant telle ou telle sélection de métadonnées à afficher avec leur mise en forme.
Il vous suffira d'invoquer un de ces fichiers dans l'option -p pour obtenir l'affichage les données souhaitées, sans avoir besoin de vous souvenir de la syntaxe exacte de chaque donnée.
(04/02/2023) Une deuxième utilisation de cette option consiste à donner directement les informations à la suite du -p
L'intérêt est de permettre un traitement de la métadonnée directement dans la commande.
Exemple : exiftool -p "${directory;s(.*/)()} $xmp:Title" DSC001.jpg cette commande affiche le nom du dossier (à droite du dernier caractère \ du chemin) et le titre xmp de la photo.
C'est aussi un moyen de provoquer l'affichage réduit d'une métadonnée dont on aurait besoin dans un traitement plus général.
Un exemple d'utilisation est donné à la fin du chapitre 2E avec la commande exiftool.exe -m -p "$iptc:city"
Le paramètre -f Force print
Paramètre qui permet de "forcer" l'affichage d'une métadonnée, même si elle est vide
C'est une option utile lorsqu'on souhaite récupérer des données en colonnes (avec le format -t par exemple), une métadonnée absente ne devant pas décaler les colonnes.
Le paramètre -F Fix offset (lettre F majuscule)
Certains logiciels ou types d'appareils photo écrivent des données EXIF incorrectes, il devient alors impossible de les modifier.
Associé au paramètre -m (ignorer les erreurs mineures) , le -F tente de recalculer des données EXIF correctes.
Utilisés seuls (-F -m), ces deux paramètres permettent de contourner l'anomalie, et de modifier des dates exif, des coordonnées gps etc ...
Mais l'anomalie reste dans les exif; consultez la doc officielle de -F pour tenter de la corriger.
Le paramètre -lang Langue
En précisant fr, ce paramètre permet de traduire plus ou moins en français les noms des tags qu'ExifTool va afficher.
on écrit donc -lang fr
A utiliser de préférence avec le paramètre -L pour gérer les caractères accentués, voir ci-dessous.
Remarque : Windows en mode de commande (la fenêtre noire affichée par ExifTool) affiche du texte au format ANSI qui ne gère pas les accents.
Une astuce consiste à utiliser la police Lucida console dans les propriétés des raccourcis. Les accents sont alors bien mieux affichés.
Autre solution, ajoutez l'option -w txt , la sortie se fera dans un fichier texte, et dans ce fichier, les accents sont bien gérés.
Le paramètre -L Latin
Ce paramètre a une autre forme: -charset latin qui équivaut à -L
Cela semble permettre l'utilisation de données contenant des caractères accentués en français.
Pour pouvoir écrire les caractères accentués dans des métadonnées IPTC, il faut aussi ajouter "-IPTC:CodedCharacterSet=utf8" dans la commande ExifTool
Le paramètre -g Grouper
Utilisé seul, ce paramètre liste les tags par groupes. Le nom du groupe délimite un paragraphe.
Il n'est donc utile que dans les cas ou ExifTool va produire une liste de tags, ce qui rend le résultat plus lisible.
On peut ajouter des valeurs à ce paramètre ( -g0 ou -g1 ...) : voir la doc.
Le paramètre -G Affiche les noms de métadonnées avec le nom du groupe dans une première colonne. La lettre G est en majuscules.
Exemple : IPTC Caption-Abstract
A la différence du g minuscule, les données sont ici affichées en colonnes, et non en paragraphes.
Le paramètre -ext Extension
Ce paramètre permet de spécifier une extension de nom de fichier en entrée, c'est à dire les fichiers qui vont être lus pour être traités.
Par exemple, pour limiter un traitement uniquement aux fichiers de type jpg, on écrira -ext jpg
Plus spécifiquement, si on veut appliquer un traitement à des fichiers normalement ignorés, on peut ainsi le spécifier, par exemple -ext gpx
Si on veut exclure un type de fichier, il faut doubler le tiret. Ex: traiter tous les fichiers reconnus sauf les JP2 ce sera --ext JP2
(Pour spécifier un type de fichier en sortie, la méthode sera différente, voir le paramètre -o par exemple)
Le paramètre -a all
Il existe des noms de tags ambigus, c'est à dire portant le même nom dans des groupes ou sous-groupes différents.
Par exemple "keywords" existe dans le groupe IPTC, et aussi dans le groupe XMP (destinés aux documents pdf. XMP:xmp-pdf:Keywords)
Par défaut, ExifTool va privilégier l'un de ces groupes, notamment en lecture. ("preferred group" dans la doc en anglais)
Le paramètre -a force la lecture de tous les tags portant le même nom ( exemple -a -keywords )
Si on précise les noms complets des tags, inutile d'utiliser -a
Si on ne précise aucun tag , -a signifie "all" c'est à dire tous les tags.
(16/05/2023) Le paramètre -u unknown
Si on utilise -a -u sans préciser de nom de tag, ExifTool va afficher tous les tags de l'image concernée, y compris les tags inconnus.
Pour avoir le nom "correct" de ces tags inconnus, utilisez aussi -s et -G afin d'avoir un affichage précis, et repérer ainsi le nom qui vous intéresse.
Lorsqu'on souhaite afficher précisément un tag "inconnu" , l'option -u ou -U est obligatoire.
Exemple : pour afficher le tag Maker Notes Sony b04c, la syntaxe est : exiftool -k -u "-MakerNotes:Sony_0cb04c"
Le caractère séparateur underscore (_) est requis.
Le paramètre -h HTML
Provoque l'affichage du résultat de la commande sous forme html
Cela peut être utile si vous prévoyez de publier le résultat dans un site internet, ou si vous souhaitez afficher le résultat avec un navigateur web.
Le paramètre -s Provoque l'affichage des noms de métadonnées telles qu'elles doivent être écrites dans les commandes Exiftool.
je suppose que c'est contradictoire avec -lang
Exemple de nom : Caption-Abstract
Le paramètre -n Par défaut, ExifTool réalise une conversion de la valeur de certaines métadonnées, pour les rendre plus lisibles.
Exemple, la balise Exif Orientation affiche "horizontal" en anglais, "0° (haut/gauche)" en français avec lang=fr.
En utilisant l'option -n, ExifTool ne fera pas la conversion et conserve la valeur réelle de la métadonnée. (orientation = 1)
Le paramètre -d Permet de spécifier le format de date, lorsqu'une métadonnée contenant une date est lue, puis utilisée.
Lisez la partie décrivant l'utilisation du symbole % à ce sujet dans le chapitre 4B ci-dessous
La doc officielle pour les formats de date est ici
Le paramètre -m (minor) Vous pouvez rencontrer ce paramètre dans des exemples, il sert à éliminer les compte rendus d'erreurs mineures.
Le paramètre -o (output) Certaines commandes ExifTool provoquent l'écriture de fichiers. L'option -o permet de préciser le nom du dossier ou du fichier à utilser en sortie.
Dans certains cas de déplacement ou de traitement sur les fichiers, ce paramètre provoque la copie des fichiers au lieu de leur déplacement.
C'est une précaution importante au cas où vous auriez fait une erreur dans votre manip.
Ce paramètre ne concerne pas les formats de sortie qui sont précisés autrement, par exemple avec un paramètre du type -csv
Le paramètre -w Un exemple , ajouter -w txt après une commande provoque le renvoi de l'affichage dans un fichier texte portant le nom de la photo (avec extension.TXT),
fichier qui sera créé dans le même dossier que la photo originale.
4B Opérateurs
Opérateur < On a vu dans les exemples précédents l'opérateur < , par exemple dans ce cas : -IPTC:Caption-Abstract<Filename -L Il permet de récupérer une valeur pour l'écrire dans un tag : l'expression -IPTC:Caption-Abstract<Filename se lit de droite à gauche :
le "Filename" est extrait, puis envoyé dans la métadonnée IPTC:Caption-Abstract
Précaution : le sybole < étant interprété par windows, la commande qui le contient doit être encadrée par des guillemets.
"-IPTC:Caption-Abstract<Filename" -L
Opérateur - et - - Remarquez le tiret qui précède IPTC:Caption-Abstract dans l'exemple précédent; c'est aussi un opérateur qui signifie que le tag va être écrit.
Si le tiret est doublé, ça signifie que le tag ne doit pas être écrit (dans une commande suceptible d'écrire plusieurs tags à la fois)
En règle générale, ce double tiret signifie "excepté" et peut concerner aussi un groupe de tags.
Opérateur = Si on veut inscrire une valeur dans un tag, l'opérateur sera le signe = (Exemple : -City=Avignon)
Si vous mettez un espace immédiatement après le signe = il sera interprété comme un séparateur de commande et le tag sera effacé.
L'opérateur ^= insère un texte vide dans le tag, au lieu de l'effacer (Exemple : -City^=)
En utilisant les guillemets c'est plus clair, comme ceci : "-City=" efface le tag, "-City^=" vide le tag, "-City=Le Mans" écrira Le Mans.
Tags liste Il existe des tags dits "en liste"; c'est le cas par exemple des mots clés IPTC ou XMP, qui contiennent une liste de mots-clés.
Dans les tags en liste, les opérateurs += et -= permettent d'ajouter ou d'enlever un élément d'une liste
Si on souhaite ajouter une valeur à une liste, on utilisera += (exemple : -iptc:keywords+=chat)
Si on souhaite retirer une valeur à une liste, on utilisera -= (exemple : -iptc:keywords-=chat)
De même, avec l'opérateur <, on peut vouloir travailler sur des tags en liste.
Par exemple, pour ajouter des mots clés provenant de iptc:keywords dans les mots clés xmp (xmp-dc:subject), l'expression s'écrira :
-xmp-dc:subject+<iptc:keywords
Cas particulier des opérateurs += et -= L'opérateur += , selon le contexte dans lequel il est utilisé, peut avoir une autre fonction, quelque peu différente de ce qui vient d'être décrit.
Si il est utilisé pour un tag contenant une valeur numérique, il additionne la valeur spécifiée
Exemple : exiftool -ExposureCompensation+=0.5 ajoute 0.5 à la valeur qui était dans ce tag.
Attention, si on veut soustraire, il faut utiliser += avec un nombre négatif : exiftool -exposurecompensation+=-0.5 Pourquoi ? Parce que l'opérateur -= n'est pas utilisé de la même façon... il sert à "enlever" une valeur seulement si elle existe.
Exemple : exiftool -Credit-="Reuters" efface la métadonnée Credit si elle contient Reuters.
Dans un autre contexte, ces deux opérateurs, += et -= fonctionnent encore différemment, c'est le cas pour les dates.
Ils permettent d'ajouter ou de soustraire des durées (par exemple si l'appareil photo avait une date ou une heure incorrectes)
Exemple : exiftool -DateTimeOriginal+="0:0:0 01:55:00" ajoute 1h 55min à la date de prise de vue.
(15/10/2019) L'opérateur de traitement : $ {nom de tag;traitement} Dans les exemples précédents, vous avez pu voir apparaître le symbole $, comme par exemple dans l'expression "-iptc:keywords<${iptc:keywords;NoDups}" Le symbole Dollar introduit un traitement sur le tag qui est mentionné dans l'expression entre accolades , le traitement étant décrit à la suite du point virgule.
Donc, dans l'exemple ci dessus, le tag -iptc:Keywords de gauche va recevoir le résultat du traitement "NoDups", réalisé sur le (même) tag source qui est écrit à droite du signe <.
Ce traitement 'NoDups" consiste à éliminer les éventuel doublons présents dans le tag source.
La forme générale est donc : $ accolade tag point-virgule traitement accolade
Pour enchainer plusieurs traitements, utilisez le point virgule comme séparateur.
Un autre exemple cité au tout début de la doc est : ${FileName;s/\.[^.]*$//} Le traitement consiste ici à remplacer l'extension du nom de fichier par "rien du tout"
Ce traitement est une "expression régulière" de substitution ; il commence donc à partir du point virgule
Et il est de la forme s/texte recherché/texte qui remplace/ (le s signifie substituer)
La partie texte recherché est \.[^.]*$ et la partie texte qui remplace est entre les deux // à la fin, c'est à dire vide.
La signification de \.[^.]*$ est la suivante :
le dollar indique que nous cherchons des critères en commençant par la fin de texte. Ici, le dollar est interprété en tant qu'élément de l'expression régulière.
Puis, lisez de g à d : trouver un point (neutralisé ou échappé par un \), suivi de caractères différents du point [.^] présents x fois (l'astérisque *)
(15/05/2024) : J'apprends qu'on peut utiliser le tag Basename (nom de fichier sans extension) à la place de Filename !
(15/05/2024) Exemples avec regexp On vient de voir dans l'exemple précédent un traitement regex ou regexp, ce qui est un peu hors sujet dans cette page.
Les traitements regexp existent sans parenté avec ExifTool, faites vos recherches à ce sujet...
C'est un sujet à ne pas négliger, car les regexp sont extrêmement puissants.
Je vais citer néanmoins ici quelques exemples dont j'ai eu besoin récemment en traitant par exemple le nom de fichier 24-05-11:13-30-DSC001.jpg
- La substitution ne s'effectue qu'une fois. ${filename;s/\-/" "/} donnera 24 05-11:13-30-DSC001.jpg
- Utilisez l'option g pour "global" : ${filename;s/\-/" "/g} donnera 24 05 11:13 30 DSC001.jpg (ôter tous les tirets)
- Une autre syntaxe pour faire la même chose : ${filename;s(\-)(" ")g} - Un autre moyen, utiliser tr au lieu de s : ${filename;tr/\-/" "/} donnera aussi 24 05 11:13 30 DSC001.jpg
- Utilisation de variables. Des expressions évaluées entre parenthèses sont stockées dans les variables $1 $2 $3 ...
Exemple ${filename;s/(^.{6}):(.{5})(\-)(.*$)/$1" "$2" "$4/} donnera 24-05-11 13-30 DSC001.jpg (découpage en trois groupes)
Remarquez dans ces exemples que le symbole dollar, comme tout ce qui est après le point virgule, est interprété par regexp, et non par ExifTool.
Fin de la parenthèse regexp
J'espère un jour pouvoir faire une doc sur les différents autres traitements possibles fournis par ExifTool, hors regex.
L'opérateur $ est utilisé de manière assez similaire dans l'option -p : il précède les noms de tags, mais les accolades peuvent être omises s'il n'y a pas de traitement.
Exemple : exiftool -p "$xmp:Title" DSC001.jpg   affiche le titre xmp de la photo DSC001.jpg
Vous avez pu voir aussi apparaîte le symbole $ dans d'autres situations, dans les fichiers de configuration par exemple.
Dans ces cas là, on n'est plus dans une écriture d'opérations sur les tags, mais dans une forme de langage de script.
Le dollar sert alors à désigner des variables dans les scripts ($val ou $PicasaRegionName...), et il n'y a pas d'accolades dans cette écriture.
(15/04/2021) Le symbole % dans le renommage de fichiers
Le symbole % est utilisé lorsqu'on veut modifier les noms des photos, ou les noms de dossiers.
Les deux métadonnées concernées sont FileName et Directory.
Il y a quelques informations sur ces deux métadonnées à la fin du chapitre 5 "tags spéciaux"
- Variables :
%f : nom de fichier sans extension. %e : extension. %d : nom du dossier.
Par exemple, renommer le fichier 1234.jpg en ajoutant IMG devant son nom :
exiftool "-FileName<IMG%f.%e" 1234.jpg L'opération consiste à modifier la métadonnée FileName, qui est le nom du fichier.
On y écrit IMG suivi du nom de fichier (%f), du point, et de l'extension (%e).
- Formats de date
Le symbole % est aussi utilisé pour les formats de date , après l'option -d :
%Y : année sur 4 chiffres. %m : mois sur 2 chiffres. %d : jour sur 2 chiffres
%y : année sur 2 chiffres. %B : nom du mois. %b : mois abrégé. %A : nom du jour. %a : jour abrégé.
%j : numéro de jour dans l'année. %w : numéro de jour dans la semaine. %W : numéro de semaine
%c ou %x ou %X : représentation de la date selon les règles habituelles de votre pays.
- Et les formats d'heures :
%H : Heure (24). %I : Heure (12). %M : Minute (60). %S : Secondes (60). %s : Nombre de secondes depuis le 01/01/1970.
%z : Time zone (+/- hhmm). %Z : Nom de Time zone
- On peut aussi utiliser les variables %f ou %e ou %d dans une déclaration de format de date, on doublera alors le symbole %
- Exemples
exiftool -d %Y%m%d_%H%M.%%e "-FileName<CreateDate" photos Cette commande renomme les fichiers (de type jpg par exemple) contenus dans le dossier "photos" en utilisant leur date de prise de vue.
-FileName est la métadonnée cible, CreateDate est la métadonnée source dans laquelle on va chercher an, mois, jour, minutes, secondes.
Le paramètre -d annonce la spécification du format de date, qui sera donc du type aaammjj_hhmm
On obtiendra par exemple en résultat un nom de fichier comme 20210413_1915.jpg
Remarquez la présence du double caractère % dans %%e qui représente l'extension de nom de fichier jpg (précédée du point).
Comme le point, le caractère _ (tiret bas) est simplement ajouté dans le format pour apparaitre dans le résultat.
Important :
- Les commandes ExifTool sont évaluées de gauche à droite. Le format de date -d doit donc précéder l'expression qui l'utilise.
- Utilisez -testname à la place de -filename pendant la mise au point de vos paramètres !
- La métadonnée FileName contient le nom du fichier avec l'extension, la variable %f contient le nom de fichier sans extension.
En utilisant le caractère dollar et des accolades, on peut réaliser un traitement sur la métadonnée filename
Exemple : ${filename;s/\.[^.]*$//} ici on supprime l'extension du nom de fichier
Si vous voulez qu'un caractère "espace" soit utilisé dans un nom de fichier, mettez des guillemets...
- Soit autour du format de date :
exiftool -d "%Y%m%d %H%M.%%e" "-filename<CreateDate" photos pour obtenir par exemple la forme 20210413 1915.jpg
- Soit autour de la commande de modification de nom
exiftool "-filename=Nom de mon fichier"
Et n'utilisez pas les caractères interdits dans les noms de fichiers. (/ \ ? * : | " < >)
Pour les éliminer, utilisez un traitement avec le point virgule : exiftool "-filename<${CreateDate;}"
Autre exemple, déplacer les photos du dossier temp vers des dossiers annuels
exiftool -d %Y "-directory<DateTimeOriginal" temp
Lisez également la fin du chapitre 5 sur les tags spéciaux FileName et Directory...
a suivre @, ...
4C Variables
en cours d'écriture
- ${Filesequence} Variable qui prend les valeurs de 1 à N lors du traitement de N fichiers dans un répertoire
Exemple : exiftool "-datetimeoriginal+<0:0:${filesequence}0' c:\Tool\tests" pour incrémenter l'heure de 10 en 10 secondes (avec le zéro qui suit !) des images du répertoire c:\Tool\tests
ooooooooooooooooooo
5 Autres fonctions et tags spéciaux
Des fonctions sous forme de tags La plupart des tags utilisés dans ExifTool correspondent à des métadonnées "classiques" normalisées dans les groupes exif, iptc ou xmp.
Mais il existe aussi des tags que le développeur à créés pour permettre divers traitements et fonctions dans ExifTool
-ver
La commande: exiftool -ver affiche la version d'ExifTool
-overwrite_original
Par défaut, lorsqu'il modifie un fichier, ExifTool laisse une copie du fichier original dans le même dossier.
Ainsi, après une opération sur un fichier DSC000.JPG, vous trouvez aussi un fichier nommé DSC000.JPG_original
Si vous souhaitez éviter d'avoir ces copies d'originaux, l'option -overwrite_original doit être ajoutée aux paramètres.
Dans ce cas, je vous conseille de tester le traitement ExifTool sur une copie de votre lot de photos.
Quand vous êtes sûr que la méthode est au point, vous pouvez alors ajouter l'option -overwrite_original
L'autre solution, c'est de ne pas utiliser cette option, afin de pouvoir utiliser deux autres options (-restore_original ou -delete_original)
-overwrite_original_in_place
Cette fonction est très proche de la précédente, mais ici certains attributs de fchiers seront préservés.
La doc officielle semble se concentrer sur Mac OS, et je n'ai pas fait de tests sous Windows, alors je n'en sais pas plus.
La documentation officielle indique que cette fonction est plus lente que "overwrite_original"
Cependant, si vous modifiez avec ExifTool des informations "système", la "date système de modification" sera tout de même modifiée.
-restore_original
La commande: exiftool -restore_original C:\photos va rétablir à leur place, dans le dossier "photos", les images originales ayant l'extension _original
suite à traitement qui n'aurait pas été satisfaisant.
Créez un nouveau raccourci, nommé Restore Original, contenant C:\Tool\exiftool.exe -restore_original -k dans la case cible.
Pour annuler un traitement ExifTool, glissez les images ou le dossier traités sur ce raccourci.
Pour que cette "restauration" puisse se faire, il faut que le fichier .jpg et .jpg_original existent dans le même dossier
Je fais une utilisation intensive de cette fonction pendant mes tests, c'est très pratique, ça restitue mes images de test à l'état initial.
-delete_original
La commande: exiftool -delete_original C:\photos va effacer, dans le dossier "photos", tous les fichiers en double qui ont l'extension _original Créez un nouveau raccourci, nommé Delete Original, contenant C:\Tool\exiftool.exe -delete_original -k dans la case cible.
Glissez un dossier sur ce raccourci afin d'éliminer tous les doubles de fichiers ayant l'extension _original, quand vous serez sûr que les modifications apportées lors d'un traitement précédent sont bonnes.
-csv=
Commande d'importation, décrite dans le chapitre 3D
-list
...
Les tags spéciaux
Ces tags sont proches des métadonnées classiques en ce sens qu'ils sont utilisés un peu de la même manière.
-alldates
Ce tag permet de manipuler en même temps les trois métadonnées EXIF suivantes : DateTimeOriginal, CreateDate, ModifyDate
-all
Permet de lister tous les tags, ou tous les tags d'un groupe. Ce n'est pas vraiment un paramètre, c'est plutôt un nom de tag "joker"
Par exemple, lister les tags exif s'écrit -exif:all
Il me semble que ce all est implicite, par exemple exiftool -k -xmp va lister tous les tags xmp
-IPTC:CodedCharacterSet
Ce tag, quand il prend la valeur utf8 ( -IPTC:CodedCharacterSet=utf8 ) permet d'utiliser des caractères accentués dans les métadonnées IPTC.
Je n'ai pas réussi à le rendre visible ... peut-être est il impossible de l'afficher ? En tout cas, ça fonctionne.
(Remarque : La console Windows a besoin du paramètre chcp 65001 et de la police Lucida pour gérer les caractères accentués)
Il s'agit là d'un tag correspondant à une métadonnée introduite par Adobe (xmp-lr:hierarchicalsubject) pour enrichir la façon d'utiliser des mots clés.
Par exemple, voici une hiérarchie à trois niveaux, trois mots clés sont écrits dans l'image :
hierarchicalkeywords1 animal
hierarchicalkeywords2 animal|mammifere
hierarchicalkeywords3 animal|mammifere|chat
les chiffres 1,2 ou 3 ajoutés au nom de la métadonnée correspondent à une convention d'écriture pour ExifTool, c'est ce qui en fait une spécificité.
Ils peuvent être ajoutés pour spécifier un niveau hiérarchique, en particulier lors de la lecture.
En écriture on peut s'en dispenser, si on écrit -hierarchicalsubject+=animal|mammifere, c'est forcément un niveau 2 dans la hiérarchie.
Je n'ai pas beaucoup pratiqué ExifTool sur ces mots-clés, c'est bien plus confortable avec d'autres logiciels, comme XnViewMP.
Les tags Fichier ou Répertoire ExifTool est capable de modifier les noms de fichiers, ou les noms de répertoires
Il permet donc de renommer des fichiers, et comme les noms de répertoires décrivent l'emplacement des fichiers, il peut aussi les déplacer.
Il y a des précautions évidentes à prendre avant de manipuler ces tags.
-testname
Le tag testname permet de faire des essais sans lancer de modification sur un vrai fichier, en prenant la place des noms de fichiers cibles.
Exemple : -k -d %Y-%W- -TestName<${CreateDate}${FileName;s/^[0-9]{4}//} Ces paramètres permettent de renommer par exemple 20210406-1300image.jpg en 2021-14-0406-1300image.jpg (insertion du numéro de semaine)
Les caractères à ne pas utiliser dans les noms de dossier ou de fichier pour Windows sont : / \ ? * : | " < >
Si vous récupérez une valeur dans un tag, pour l'injecter dans un nom de fichier (exemple: -filename<Headline), on peut éliminer les éventuels caractères interdits.
La méthode est de faire un traitement ($) sur la donnée en ajoutant seulement un point virgule dans les accolades, comme ceci : -filename<${Headline;}
Il y a un cas particulier où il faut se méfier des tags filename et directory, c'est lorsqu'on extrait des tags en nombre d'un fichier pour les injecter dans un autre.
De ce que j'en ai compris, MWG n'est pas un nouvel ensemble de métadonnées qui s'ajouterait à exif, iptc et xmp, mais une asutce utilisée par ExifTool
Le nom MWG vient de Metadata Working Group, et il est qualifié de groupe composite car il essaie de rassembler des informations.
MWG signifierait exif + iptc + xmp. C'est un moyen commode pour nommer et manipuler des métadonnées homologues dans les trois groupes en une seule fois.
Donc, en écriture, MWG-copyright représente trois métadonnées : EXIF:Copyright, IPTC:CopyrightNotice et XMP-dc:Rights (et quelques autres).
Des tags correspondant à certaines métadonnées qui n'existent pas dans le groupe exif concerneront seulement iptc et xmp
Exemple : MWG:keywords représente les métadonnées iptc:keywords et xmp:subject (et aussi deux autres métadonnées iptc).
De même, MWG:City représente iptc:city et xmp:city et quelques autres.
Cas particulier d'IPTC en écriture: le tag MWG va écrire les métadonnées IPTC uniquement si le groupe IPTC existe déjà dans la photo.
En lecture, il y a un ordre de priorité lorsqu'on utilise MWG : il semble que les données XMP soient lues en priorité.
Etc... La documentation correspondante est ICI
Voici les métadonnées les plus classiques regroupées selon la préconisation MWG :
Tag Name
Derived From
City
IPTC:City
XMP-photoshop:City
XMP-iptcExt:LocationShownCity
Copyright
EXIF:Copyright
IPTC:CopyrightNotice
XMP-dc:Rights
Country
IPTC:Country-PrimaryLocationName
XMP-photoshop:Country
XMP-iptcExt:LocationShownCountryName
CreateDate
Composite:SubSecCreateDate
EXIF:CreateDate
IPTC:DigitalCreationDate
IPTC:DigitalCreationTime
XMP-xmp:CreateDate
Creator
EXIF:Artist
IPTC:By-line
XMP-dc:Creator
DateTimeOriginal
Composite:SubSecDateTimeOriginal
EXIF:DateTimeOriginal
IPTC:DateCreated
IPTC:TimeCreated
XMP-photoshop:DateCreated
Description
EXIF:ImageDescription
IPTC:Caption-Abstract
XMP-dc:Description
Keywords
IPTC:Keywords
XMP-dc:Subject
Location
IPTC:Sub-location
XMP-iptcCore:Location
XMP-iptcExt:LocationShownSublocation
ModifyDate
Composite:SubSecModifyDate
EXIF:ModifyDate
XMP-xmp:ModifyDate
Orientation
EXIF:Orientation
Rating
XMP-xmp:Rating
State
IPTC:Province-State
XMP-photoshop:State
XMP-iptcExt:LocationShownProvinceState
Le groupe Composite (07/03/2023)
Comme MWG, ce groupe est un artifice.
Le développeur a souhaité rendre plus accessibles certaines informations qui nécéssitent un calcul, ou plusieurs métadonnées.
Ne confondons pas : le groupe MWG est qualifié de "composite" car il gère en une seule opération des métadonnées (exif + iptc + xmp) équivalentes.
Ici, le groupe est nommé "Composite" car les métadonnées qu'il affiche sont une combinaison (ou un calcul sur) des métadonnées.
Exemples :
- Des données GPS auxquelles une correction doit être apportée.
- Un temps d'exposition de 0.008s dont on souhaite obtenir la forme en fraction : 1/125e
- Une heure exif à laquelle on doit ajouter un décalage lié à l'heure d'été
- Une focale d'objectif recalculée pour son équivalent 24x36
- Une forme d'affichage de coordonnées GPS du type 45°20'30" N, 5°45'15" E en une seule expression.
Dans ExifTool, ces calculs ont été préparés, et pour en obtenir le résultat, il suffit d'invoquer la pseudo métadonnée composite correspondante.
On obtient de cette façon une information plus facilement utilisable en lecture.
Par conséquent, il n'y a pas de possibilité d'écrire de telles métadonnées, puisqu'elles résultent d'un calcul.
Si vous en trouvez de manifestement fausses, il faudra modifier en amont la métadonnée qui est à la source de l'erreur.
Il faudra que j'ajoute ici quelques exemples...
En vrac, quelques pages intéressantes du site officiel, dont j'ai du mal à retrouver l'accès :
https://exiftool.org/geotag.html
https://exiftool.org/filename.html
https://exiftool.org//TagNames/Extra.html
https://exiftool.org/struct.html
Et dans la liste ci-dessous, d'autres pages intéressantes, par exemple Erreurs courantes lors de l'utilisation d'ExifTool (en anglais)
Le forum ExifTool pourra également apporter pas mal d'informations.
Notes: Date Taken - When setting through Windows, only the date appears to be editable. Title - The priority that windows fills this tag is different for jpegs and tifs. IPTC Data written - Testing seems to indicate that these tags are not created by default. I still need to test whether the tag or just the IPTC block needs to exist. RatingPercent - Setting: 5 Stars = 99, 4 stars = 75, 3 stars = 50, 2 stars = 25, 1 star = 1, 0 stars = removes tags. Reading: 88-100+ = 5 Stars, 63-87 = 4 stars, 38-62 = 3 stars, 13-37 = 2 stars, 1-12 = 1 star, no tag or 0 = 0 star PNG - Png files only seem to have one tag related property for Windows