MetadataHelper

De Sydonie
Révision de 21 décembre 2012 à 16:04 par Romain (discussion | contributions) (Ecrire des métadonnées)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

MetadataHelper : outil de lecture/écriture des métadonnées

Documentation effectuée sur :

  • Helpers subversion release : 117

Dépendances :

  • Helpers/exiftool
  • Helpers/Language

Lire les métadonnées

Lecture fondée sur le vocabulaire (MetadataHelper_Vocabulary)

Cette façon de procéder convient à qui veut récupérer les métadonnées en fonction d'un espace de nom prédéfini. Pour récupérer seulement certaines propriétés de plusieurs espaces de noms différents, il est préférable de passer par la lecture des métadonnées fondée sur l'usage des containers.

/*
 * Constituer le tableau de vocabulaires souhaités
 */
 
$v1 = MetadataHelper::vocabulary('XMP-dc');
$v2 = MetadataHelper::vocabulary('XMP-xmpRights');
$v3 = MetadataHelper::vocabulary('XMP-xmpMM');
$v4 = MetadataHelper::vocabulary('ExifIFD');
$a = array($v1, $v2, $v3, $v4);
 
/*
 * Récupérer les métadonnées
 */
 
$mii = new MetadataHelper_Reader_Image();
$m = $mii->read('./IMG_towrite.JPG', $a);

Lecture fondée sur les containers (MetadataHelper_Container)

Le principe de cette méthode consiste à préparer un container qui contiendra les différentes propriétés à récupérer. Ce container est alors parcouru lors de la lecture des métadonnées pour ne récupérer que les différentes propriétés qui y ont été intégrées.

/*
 * Constituer le tableau de vocabulaires souhaités
 * @note : dispensable si l'on passe par la méthode
 *         MetadataHelper_Container::getDefaultProperty($namespace, $propertyName)
 */
$v1 = MetadataHelper::vocabulary('XMP-dc');
$v5 = MetadataHelper::vocabulary('ExifIFD0');
$v6 = MetadataHelper::vocabulary('FileSystem');
 
/*
 * Création du container
 */
 
$c = new MetadataHelper_Container();
 
/*
 * Ajout de propritété à récupérer au container
 */
 
// Récupérer en passant par un vocabulaire
$contributor = $v1->getObjectPropertyType('Contributor');
$c->addProperty('XMP-dc', 'Contributor', $contributor);
 
$creator = $v1->getObjectPropertyType('Creator');
$c->addProperty('XMP-dc', 'Creator', $creator);
 
$orientation = $v5->getObjectPropertyType('Orientation');
$c->addProperty('ExifIFD0', 'Orientation', $orientation);
 
// Récupérer en passant par le système de gestion des métadonnées
$c->addDefaultProperty('FileSystem', 'FileName');
$c->addDefaultProperty('FileSystem', 'Directory');
// équivaut à :
//$filename = $v6->getObjectPropertyType('fileName');
//$c->addProperty('FileSystem', 'Creator', $filename);
//$directory = $v6->getObjectPropertyType('Directory');
//$c->addProperty('FileSystem', 'Directory', $directory);
 
$mii = new MetadataHelper_Reader_Image();
$m = $mii->read('./IMG_towrite.JPG', $c);

Ecrire des métadonnées

Ecriture fondée sur les containers (MetadataHelper_Container)

/*
 * Création du container
 */
 
$c = new MetadataHelper_Container();
 
/*
 * Constituer le tableau de vocabulaires souhaités
 */
 
$voc_dc = MetadataHelper::vocabulary('XMP-dc');
$voc_rights = MetadataHelper::vocabulary('XMP-xmpRights');
$voc_mm = MetadataHelper::vocabulary('XMP-xmpMM');
 
/*
 * Remplir le container à metadonnées pour l'écriture
 */
 
$certificate = $voc_rights->getObjectPropertyType('Certificate');
$certificate->setValue('certificat text');
$c->addProperty('XMP-xmpRights', 'Certificate', $certificate);
 
$marked = $voc_rights->getObjectPropertyType('Marked');
$marked->setValue(true);
$c->addProperty('XMP-xmpRights', 'Marked', $marked);
 
$instanceID = $voc_mm->getObjectPropertyType('InstanceID');
$instanceID->setValue('unique_identifier_instanceID#1');
$c->addProperty('XMP-xmpMM', 'InstanceID', $instanceID);
 
$documentID = $voc_mm->getObjectPropertyType('DocumentID');
$documentID->setValue('unique_identifier_documentID#1');
$c->addProperty('XMP-xmpMM', 'documentID', $documentID);
 
/*
 * Ecrire les métadonnées
 */
 
$mwi = new MetadataHelper_Writer_Image();
$mwi->write('IMG_towrite.JPG', $c);