Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3533 → Rev 3534

/trunk/jrest/bibliotheque/ExtracteurMetadonnees.php
443,15 → 443,8
}
 
$metadonnees = array();
$metadonnees['hauteur'] = $this->obtenirHauteur();
$metadonnees['largeur'] = $this->obtenirLargeur();
$metadonnees['date_prise_de_vue'] = $this->obtenirDatePriseDeVue();
$metadonnees['appareil_fabriquant'] = $this->obtenirAppareilFabricant();
$metadonnees['appareil_modele'] = $this->obtenirAppareilModele();
$metadonnees['meta_exif'] = $this->convertirMetaVersXML('EXIF');
$metadonnees['meta_iptc'] = $this->convertirMetaVersXML('IPTC');
$metadonnees['meta_xmp'] = $this->convertirMetaVersXML('XMP');
$metadonnees['meta_makernote'] = $this->convertirMetaVersXML('MAKERNOTE');
$metadonnees['date_shot'] = $this->obtenirDatePriseDeVue();
$metadonnees['size'] = getimagesize($cheminImage);
return $metadonnees;
}
 
521,133 → 514,12
return $metadonnees ;
}
 
private function formaterTableauExif(&$tableau) {
$tableau_exif_formate = array();
 
foreach ($tableau as $nom_tag => $valeur) {
$id = '';
if (isset($this->tableau_ids_tags_exif[$nom_tag])) {
$id = $this->tableau_ids_tags_exif[$nom_tag];
}
$tableau_exif_formate[$nom_tag] = array('id' => $id, 'valeur' => $valeur);
}
 
return $tableau_exif_formate;
}
 
/**
* Extraction des metadonnées iptc
*/
public function extraireIptc($chemin_fichier) {
$meta = array();
 
// getimagesize renvoie les infos iptc dans le tableau info
$info = array();
$size = getimagesize($chemin_fichier, $info);
 
// s'il existe
if (isset($info['APP13'])) {
// on parse les donnees
$iptc = iptcparse($info['APP13']);
if ($iptc) {
// et on les analyse
foreach ($iptc as $marker => $section) {
foreach ($section as $nom => $val) {
// pour remplir le tableau de donnees
$this->decoderValeurIptc($marker, $val, $meta);
}
}
}
}
return $meta;
}
 
/**
* Stocke une valeur de metadonnées iptc dans le champ du tableau correspondant
* @param String $nom nom de la valeur
* @param String $val valeur
* @param String $data référence vers le tableau où la donnée sera stockée
**/
private function decoderValeurIptc($nom, $val, &$data_tab) {
switch ($nom) {
case "2#005" :// mots cles iptc
$data_tab['Category'] = array('id' => '5', 'valeur' => $val);
break;
case "2#080" :// champ by line
$data_tab['By-Line'] = array('id' => '80', 'valeur' => $val);
break ;
case "2#085" :// champ by line titre
$data_tab['By-LineTitle'] = array('id' => '85', 'valeur' => $val);
break ;
case "2#090" :// ville
$data_tab['City'] = array('id' => '90', 'valeur' => $val);
break ;
case "2#092" :// sous location
$data_tab['SubLocation'] = array('id' => '92', 'valeur' => $val);
break ;
case "2#095" :// etat (pour les us)
$data_tab['ProvinceState'] = array('id' => '95', 'valeur' => $val);
break ;
case "2#100" :// code pays
$data_tab['CountryPrimaryLocationCode'] = array('id' => '100', 'valeur' => $val);
break ;
case "2#101" :// code pays
$data_tab['CountryName'] = array('id' => '101', 'valeur' => $val);
break ;
case "2#105" :// titre principal
$data_tab['Headline'] = array('id' => '105', 'valeur' => $val);
break ;
case "2#110" :// credit
$data_tab['Credit'] = array('id' => '110', 'valeur' => $val);
break ;
case "2#116" :// copyright
$data_tab['CopyrightNotice'] = array('id' => '116', 'valeur' => $val);
break ;
case "2#118" :// contact
$data_tab['Contact'] = array('id' => '118', 'valeur' => $val);
break ;
default:
unset($data_tab['nom']);
}
}
 
private function obtenirHauteur() {
$hauteur = isset($this->meta['File']['ImageHeight']) ? $this->meta['File']['ImageHeight']['valeur'] : '';
return $hauteur;
}
 
private function obtenirLargeur() {
$largeur = isset($this->meta['File']['ImageWidth']) ? $this->meta['File']['ImageWidth']['valeur'] : '';
return $largeur;
}
 
private function obtenirDatePriseDeVue() {
$date = isset($this->meta['EXIF']['DateTimeOriginal']) ? $this->meta['EXIF']['DateTimeOriginal']['valeur'] : '';
return $date;
}
 
private function obtenirAppareilFabricant() {
$fabriquant = isset($this->meta['EXIF']['Make']) ? $this->meta['EXIF']['Make']['valeur'] : '';
return $fabriquant;
}
 
private function obtenirAppareilModele() {
$modele = isset($this->meta['EXIF']['CameraModelName']) ? $this->meta['EXIF']['CameraModelName']['valeur'] : '';
return $modele;
}
 
private function convertirMetaVersXML($type) {
$xml = null;
if (isset($this->meta[$type])) {
$racine = strtolower($type);
 
$xml = '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
$xml .= "<$racine>"."\n";
foreach ($this->meta[$type] as $prop => &$valeur) {
$xml .= '<'.$prop.' id="'.$valeur['id'].'">'.$valeur['valeur'].'</'.$prop.'>'."\n";
}
$xml .= "</$racine>";
}
return $xml;
}
}