Rev 1204 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Script d'extration des métadonnées des images pour intégration dans la BDD v2.** @category php 5.2* @package Cel/Scripts* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL* @version $Id$*/class ExtracteurMeta extends Cel {public function executer() {try {echo "EXTRACTION des MÉTADONNÉES\n";echo "Vérification config : ".$this->verifierConfig();} catch (Exception $e) {$code = $e->getCode();$message = $e->getMessage();die("\n$code : $message\n");}}private function verifierConfig() {if (empty($this->config['cel']['chemin_images'])) {$message = "Vous devez indiquer le dossier contenant la hiérarchie des images dans le paramètre : "."[cel] chemin_images";throw new Exception($message, E_USER_ERROR);}return 'OK';}private function extraireMetadonneesExifTool($cheminImage) {$metadata = array();$res = exec('/usr/bin/exiftool -g -D '.$chemin_image, $metadata);$metadata_decodees = array();$categorie = '';foreach($metadata as &$data) {if($this->estUnSeparateurCategorieExifTool($data)) {$categorie = trim(str_replace('----','',$data));} else {$data_decodee = $this->parserValeurMetadonneeExifTool($data);$cle_metadonnee = str_replace(' ', '', $data_decodee['cle']);$metadata_decodees[$categorie][$cle_metadonnee] = $data_decodee;$this->id_cle_metadonnees[$cle_metadonnee] = $data_decodee['id'];}}return $metadata_decodees;}public function obtenirCheminImageOriginale($id_image) {$nom = $this->convertirIdBddVersNomFichier($id_image, 'O');$dossier = $this->obtenirDossierPourFormat($id_image,'O');return $dossier.'/'.$nom;}public function convertirIdBddVersNomFichier($id, $format, $extension = 'jpg') {$id_avec_zeros = sprintf('%09s', $id) ;$id_avec_zeros_underscores = wordwrap($id_avec_zeros, 3 , '_', true) ;$nom_fichier = $id_avec_zeros_underscores.'_'.$format.'.'.$extension;return $nom_fichier;}public function obtenirDossierPourFormat($id, $format) {$chemin_base = $this->config['cel']['chemin_images'];$chemin_sur_serveur = $chemin_base;$id = sprintf('%09s', $id);$id = wordwrap($id, 3 , '_', true);list($dossierNiveau1, $dossierNiveau2) = explode('_', $id);$chemin_sur_serveur_final = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/'.$format;return $chemin_sur_serveur_final;}}?>