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; |
} |
} |