RoseLazuli!

Utiliser exiftool pour organiser ses photos argentiques

J'aime bien la photo argentique, il n'y a pas de batterie à charger, pas de millions d'options sur le boîtier, pas de distraction etc. Mais j'aime bien aussi trier et organiser mes photos, seulement voilà, sur une photo argentique numérisée, les metadata ne sont pas correctes ou incomplètes. Pour les corriger j'utilise exiftool.

C'est un outil en ligne de commande qui permet de manipuler les metadata (exif, xmp, etc.) sur les photos. Ça marche bien mais j'avais envie de stocker le type de pellicule sur quoi la photo a été prise, sa date de péremption, son nom etc...

Malheureusement à part la propriété ISO, il n'y a pas beaucoup d'autres propriétés standard qui peuvent être utilisées pour ajouter ce que je voudrais, mais exiftool permet d'écrire des valeurs XMP personnalisées.

J'ai donc écrit un fichier de configuration qui répond à mes besoins pour pouvoir ajouter à mes photos toutes les informations que j'avais envie de conserver.

%Image::ExifTool::UserDefined = (
    'Image::ExifTool::XMP::Main' => {
        Film => {
            SubDirectory => {
                TagTable => 'Image::ExifTool::UserDefined::Film',
            },
        },
    },
);
%Image::ExifTool::UserDefined::Film = (
    GROUPS => { 0 => 'XMP', 1 => 'XMP-Film', 2 => 'Film' },
    NAMESPACE => { 'Film' => 'https://ns.example.com/Film/1.0/' },
    WRITABLE => 'string',
    FilmMake => { }, # Kodak, Fujifilm, Ilford
    FilmName => { }, # Kodak Portra 400, Fujifilm Superia 200
    FilmExpirationDate => { }, # 2025-12-31
    FilmFormat => { }, # 35mm
    FilmType => { }, # 135
    FilmLength => { }, # 36
    FilmDevelopProcess => { }, # ex: C-41
    FilmDeveloper => { }, # The person who developed the film
    FilmProcessLab => { }, # The lab that processed the film
    FilmScanner => { }, # Fuji Frontier SP-3000
);

La syntaxe est un peu déroutante, mais on comprend vite comment ça marche, on définit un namespace et on ajoute des attributs sur ce namespace.

Ensuite, je passe le fichier de configuration à exiftool pour écrire les informations que je souhaite sur mes photos :

exiftool -config ./config.cfg \
    -XMP-Film:FilmMake="Kodak" \
    -XMP-Film:FilmName="Kodak Portra 400" \
    -XMP-Film:FilmType="135" \
    -ISO=400 \
    scan_001.jpg

La propriété ISO existant déjà dans la spécification exif, j'utilise directement celle-là pour ne pas avoir une duplication (et/ou incorrecte) avec mes données XMP.

Et voilà, maintenant à partir d'une photo je peux savoir sur quelle pellicule une photo a été exposée. Il n'est pas nécessaire de passer le fichier de configuration pour lire les données :

Pour lire toutes les données :

exiftool -G1 scan_001.jpg 
# ...
[ExifIFD]       F Number                        : 2.7
[ExifIFD]       ISO                             : 200
[XMP-Film]      Film Develop Process            : C41
[XMP-Film]      Film Format                     : 35mm
[XMP-Film]      Film Make                       : FujiFilm
[XMP-Film]      Film Name                       : FujiFilm 200
[XMP-Film]      Film Type                       : 135
# ...

Ou spécifiquement un attribut :

exiftool -XMP-Film:FilmName scan_001.jpg
Film Name                       : FujiFilm 200