ici & ailleurs

Gérer ses métadonnées

Note: Ceci est la remise en ligne d'un article datant de 2007. Il sera peut-être mis à jour ultérieurement.

Les métadonnées sont un des aspects vraiment très agréables de la photographie numérique mais il n'est pas inutile de savoir comment les exploiter pleinement et s'en méfier quand on publie des photographies.

Aujourd'hui, quand je retrouve une photo faite il y a une dizaine d'années, j'ai un mal fou à savoir de quand elle date. Je suis obligé de solliciter ma mémoire et jouer les associations du style : "c'était cette année-là car..., un dimanche de février et vu la lumière il devait être 16h". Ce n'est pas évident.

Dans dix ans, quand je voudrai connaître la date d'une photographie, j'irai simplement lire le champ EXIF "DateTimeOriginal" de celle-ci et j'aurai mon information.

EXIF, IPTC et XMP sont dans un bateau

Qui veut jouer avec les métadonnées sera un jour confronté à ces trois acronymes. EXIF est le premier que l'on rencontre. Il est utilisé par les appareils eux-mêmes au moment de l'enregistrement de la photographie. Dans les champs EXIF seront renseignées des informations telles que la date de prise de vue (mettez votre appareil à l'heure et n'oubliez pas le décalage horaire en voyage), la vitesse, l'ouverture, le déclenchement du flash, le modèle de l'appareil et son fabricant, etc. Bref, EXIF, ce sont les données techniques qu'on ne modifie généralement pas (sauf la date quand on a oublié de la changer en voyage). Nous verrons que l'on peut ajouter d'autres champs à EXIF si on le souhaite.

IPTC est un autre format de métadonnées, créé à l'origine pour embarquer les informations non techniques (disons contextuelles) de l'image pour la presse. On y retrouve logiquement des informations relatives à l'auteur, au copyright, à l'urgence ou encore à l'emplacement géographique de la photographie. Avec des logiciels de classement capables de lire et écrire ces données, il devient dès lors très simple de retrouver une photographie faite place de la Nation à Paris en mars 2007, pour peu que l'on ait bien renseigné ces informations.

Enfin, XMP est le format de métadonnées le plus récent. Il est basé sur XML et permet d'embarquer tout type de métadonnées (y compris EXIF et IPTC). XMP permet par exemple à une application de conserver un historique de modifications ou les paramétrages complets du développement d'une image RAW. En ajoutant des espaces de nom XML supplémentaires on peut également ajouter des informations comme DublinCore ou Creative Commons.

Gérer ses métadonnées

Au moment de choisir un logiciel pour organiser vos images, vérifiez que celui-ci lit et enregistre les métadonnées au sein même des photographies (et pas uniquement dans une base de données lui appartenant).

Si vous souhaitez vérifier que votre outil prend bien en charge XMP ou en choisir un nouveau, IPTC maintient une liste d'outils supportant IPTC et/ou XMP.

Parmi les outils les mieux conçus, j'ai une préférence très nette pour Adobe Bridge qui possède sans doute le meilleur gestionnaire de métadonnées, avec, entre autres, la possibilité de faire des assignations par lot (pour ajouter une localisation sur un groupe de photos par exemple).

ExifTool, le couteau suisse des métadonnées

ExifTool de Phil Harvey, contrairement à ce qu'indique son nom sait traiter quasiment tous les types de métadonnées d'une photographie. C'est un outil radicalement génial comme peut en produire le monde du libre. Alors oui, il est en ligne de commande, c'est d'ailleurs tout son intérêt, et on lui préférera Bridge ou un autre quand on veut visualiser ses images.

ExifTool permet de modifier, supprimer ou ajouter des métadonnées. La richesse de ses options est assez incroyable et offre une flexibilité qu'aucun autre outil ne possède. Qui plus est, il est capable de traiter de nombreux formats d'image (aussi, un des points forts de Bridge). À titre d'exemple, voici un peu le flux de production que j'ai fini par mettre en place.

C'est la seconde étape qui nous intéresse. Comment ajoute-t-on automatiquement une licence à une photographie ? (Et comment la change-t-on aussi par la même occasion). Commencez par choisir une licence. Admettons que ce soit Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported.

Voici alors comment insérer cette information, ainsi que votre nom à votre image :

exiftool -overwrite_original \
-xmp:Creator='votre nom' \
-xmp:WebStatement='http://creativecommons.org/licenses/by-nc-nd/3.0/' \
-xmp:Rights='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.' \
-iptc:By-line='votre nom' \
-iptc:CopyrightNotice='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.' \
-exif:Artist='votre nom' \
-exif:Copyright='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.' \
votre_fichier.jpg

C'est certes un peu long mais rudement efficace. Ajoutez l'option -r et remplacez votre_fichier.jpg par un répertoire et il traitera l'ensemble des images du répertoire de façon récursive.

Publier sur le web, le revers de la médaille

Les métadonnées sont géniales. On peut imaginer que très prochainement les boîtiers pourront enregistrer les coordonnées GPS du lieu de prise de vue (des boîtiers pro le permettent déjà) et que la question "mais où diable ai-je pris cette photo ?" ne sera plus qu'un mauvais souvenir. Les applications seront bien sûr très intéressantes, proposant un lien vers Google Maps ou autres pour repérer sur une carte où se trouve la photo ou afficher les emplacements pour tout un répertoire. À vrai dire, j'en rêve :)

Ceci dit, au moment de publier sur le web, c'est typiquement le genre d'information que vous ne souhaitez pas divulguer. Imaginez que vous rendiez visite à un ami qui possède de très beaux meubles de collection. Vous prenez quelques photos de la soirée, vous publiez cela sur Flickr ou sur votre blog en mettant un lien vers le blog de votre ami. Votre appareil ayant enregistré les informations GPS, vous donnez toutes les informations utiles à un éventuel cambrioleur et, pour peu que votre ami signale un départ en vacances, l'information "où" et "quand la maison est vide" est disponible publiquement.

D'une manière plus générale, vous n'avez sans doute pas envie de publier la version du logiciel que vous utilisez ou certains paramètres qui lui sont propres.

ExifTool peut servir à éviter ce genre de désagrément. Avec l'aide de ImageMagick il devient possible de faire ceci :

ImageMagick conserve les métadonnées d'une photographie si on transforme de JPEG vers JPEG. La solution pour les faire disparaître est donc de passer par un format intermédiaire ne les supportant pas, c'est le cas de BMP.

Voici un script shell permettant de faire tout ceci dans un répertoire passé en argument.

#!/bin/sh

exiftool="/usr/bin/exiftool"
convert="/usr/bin/convert"

if [ ! -x $exiftool ]; then
echo "$exiftool not found"
exit 0
fi

if [ ! -x $convert ]; then
echo "$convert not found"
exit 0
fi

if [ "$1" = "" ]; then
echo "No directory given"
exit 0
fi

if [ ! -d $1 ]; then
echo "$1 is not a directory"
exit 0
fi

dir=$1

for src in $dir/*.jpg; do
echo "Processing $src..."
copy=`echo $src.tmp`
/bin/cp $src $copy
$convert -resize 600x600 -size 600x600 $src $src.bmp
$convert -quality 85 $src.bmp $src

$exiftool -q -overwrite_original \
-TagsFromFile $copy \
-exif:all \
-xmp:Description \
-xmp:Title \
-xmp:Subject \
-xmp:Location \
-xmp:City \
-xmp:State \
-xmp:Country \
-xmp:CountryCode \
-xmp:Rights \
-xmp:Creator \
'-xmp-exif:all > exif:all' \
'-xmp:Description > exif:ImageDescription' \
'-xmp:Title > iptc:Headline' \
'-xmp:Subject > iptc:Keywords' \
'-xmp:Location > iptc:Sub-location' \
'-xmp:City > iptc:City' \
'-xmp:State > iptc:Province-State' \
'-xmp:Country > iptc:Country-PrimaryLocationName' \
'-xmp:CountryCode > iptc:Country-PrimaryLocationCode' \
'-xmp:Rights > iptc:CopyrightNotice' \
'-xmp:Rights > exif:Copyright' \
'-xmp:Creator > iptc:By-line' \
'-xmp:Creator > exif:Artist' \
'-exif:DateTimeOriginal > exif:CreateDate' \
'-xmp:Lens > exif:Lens' \
-xmp:WebStatement \
-ICC_Profile \
'-exif:DateTimeOriginal>FileModifyDate' \
$src

/bin/rm $copy $src.bmp
done

Ce script va copier toutes les données EXIF (-exif:all) puis un certain nombre de données XMP qui seront ensuite copiées vers les équivalents EXIF et IPTC. On fait ceci car certaines applications en ligne ne lisent pas le XMP (c'était le cas de Flickr il y a un an, je ne sais pas aujourd'hui). Enfin, le paramètre '-exif:DateTimeOriginal>FileModifyDate' permet de mettre la date de prise de vue comme date de fichier.

Notez que ce script devrait normalement fonctionner avec Mac OS en adaptant les chemins de exiftool et convert si nécessaire.

Ressources