Rappel

D'abord un petit rappel des informations (quand elles existent) que je souhaite stocker avec la photo :

Titreun titre éventuel, même si je préfère la notion d'annotation
Datela date même incomplète
Agendal’événement à l'origine le la photo (anniversaire, vacances, visites, ...)
Personnesles personnes visibles de gauche à droite
Lieuxla dénomination des lieux (Ville, Quartier, nom de la maison)
Annotationsles annotations, commentaires avec leurs auteurs
Tags des mots-clés
Clichél'auteur du cliché, parfois seulement le propriétaire de l'appareil photo.
XnView

J'ai pris une photo sous XnView et j'ai rempli l'ensemble des métadonnées IPTC avec des textes que je pourrai retrouver

Php

J'ai ensuite exécuter ce petit script pour identifier les métadonnées remontant

<?php
    $jpgFile = "test_image.jpg";

    print "\n<html><head><title>ITPC</title></head><body>";
    print "\n<pre>";

    GetImageSize ($jpgFile,$info);
    $iptc = iptcparse($info["APP13"]);

    print_r($iptc);

    print "\n</pre>";
    print "</body></html>";
?>
Analyse

En croisant les codes renvoyés, les libellés de XnView et d'autres informations glanées ici ou là sur la toile, j'arrive à ce tableau qui va me permettre de choisir l'implantation de mes informations dans les métadonnées.

keyIdxNbcSectionZoneMes infos
2#12002000cLégendeLégendeAnnotations
2#122xx32cAuteur
2#1050256cTitreTitre
2#0400256cInstructions spécialesAgenda
2#025xx64cMots clés & CatégoriesMots-clésTags
2#01503cCatégorie
2#020xx32cCatégories supplémentairesLieux
2#1160128cCréditCopyright©Cliché
2#080xx32cCréateur
2#085xx32cTitre du créateur
2#110032cCrédit
2#115032cSource
2#007064cStatutStatut éditorial
2#022032cJob ID
2#065032cProgramme
2#070010cVersion du programme
2#01001cPriorité
2#07501cCycle de l'objet
2#005064cOrigineNom de l'objet
2#090032cVille
2#0920Région
2#095032cProvince/Etat
2#101064cPays
2#10003cCode pays
2#103032cRéférence de la transmission
2#05508cDate de création (AAAMMJJ)Date
2#060011cHeure de création
2#03008cDate de sortie (AAAAMMJJ)
2#035011cHeure de sortie
2#118xx128cContactPersonnes
2#027xEmplacement contenu
2#0260
2#0000
2#045xx10cReference service
2#04708cReference Date
2#050010cReference Number
2#13002cImage Type
Php (bis)

Voici le script qui va me permettre de récupérer sous forme de tableau les infos pour une photo. J'ai séparé les annotations entre elles non par des virgules, mais par des | et des = sous cette forme : papy=mamie rigole|moi=elle est bourrée !|mon frère=t'es gonflé.

<?php
    define('ITPC_TITRE','2#105');
    define('ITPC_AGENDA','2#040');
    define('ITPC_DATE','2#055');
    define('ITPC_LIEU','2#020');
    define('ITPC_QUI','2#118');
    define('ITPC_COMMENT','2#120');
    define('ITPC_CLICHE','2#116');
    define('ITPC_TAG','2#025');

    $jpgFile = "test_image.jpg";

    print "\n<html><head><title>ITPC</title></head><body>";
    print "\n<pre>";

    GetImageSize ($jpgFile,$infFile);
    $arrayIPTC = iptcparse($infFile["APP13"]);

    $infoITPC['Titre'] = $arrayIPTC[ITPC_TITRE][0];
    $infoITPC['Agenda'] = $arrayIPTC[ITPC_AGENDA][0];
    $infoITPC['Date'] = $arrayIPTC[ITPC_DATE][0];
    $infoITPC['Lieu'] = $arrayIPTC[ITPC_LIEU];
    $infoITPC['Qui'] = $arrayIPTC[ITPC_QUI];
    foreach(explode('|',$arrayIPTC[ITPC_COMMENT][0]) as $v) {
        $infoITPC['Comment'][] = explode('=',$v);
        }

    $infoITPC['Cliche'] = $arrayIPTC[ITPC_CLICHE][0];
    $infoITPC['Tag'] = $arrayIPTC[ITPC_TAG];

    print_r($infoITPC);

    print "\n</pre>";
    print "</body></html>";
?>
Conclusion

Y'a plus qu'à comme qui dirait !

Si vous voyez quelque chose que j'ai loupé et qui va m'envoyer droit dans le mur, je vous invite à m'en faire part en commentaire, et vu la rapidité à laquelle j'avance mes projets il ne sera jamais trop tard ! merci ;-)