Thank you very, very much! Et merci bien :D.
I will try to translate my posts soon, in the english forum
Je parle un petit peut francais, mais pas bien assez. C'est possible pour quelquen de translire cette subject en anglais (ou peut-etre hollandais)?
La seul probleme pour moi c'est je ne sais pas quelle modifications sont necessaire pour automatisater EXIF en MySQL etc.
Merci bien en avance!
J'oubliais:
pour que la bulle d'aide (tool tip) sur les miniatures indique <commentaire>/<nom image> plutôt que le nom du fichier et sa taille:
include/category_default.inc.php
$thumbnail_title = $row['comment']." / ".$row['name'] ;
ça marche à peu près, mais il faut modifier cette fois:
include\functions_metadata.inc.php if ($exif = @read_exif_data($filename)) en: if ($exif = exif_read_data ($filename,0,true))
Mais il manque la suppression du header dans UserComment que j'avais écrit comme suit:
$result['comment'] = trim(substr($exif[IFD0][UserComment],8));
D'autre part, la date de prise de vue est bien récupérée mais pas l'heure (c'est le bloc if (in_array($pwg_key, $page['datefields'])) qui la supprime)
Intéressant et bien plus propre en effet. Je regarde ce que ça donne.
phgiraud a écrit:
3. J'ai malheureusement constaté que ce dernier mapping ne suffisait pas et j'ai du modifier ceci: [...]
Code:
[...] $result['date_creation'] = $exif[EXIF][DateTimeOriginal] ; $result['name'] = trim($exif[IFD0][ImageDescription]); [...]
et en configurant :
$conf['use_exif_mapping'] = array( // gérer ces champs à partir des EXIF: 'date_creation' => 'EXIF;DateTimeOriginal', 'name' => 'IFD0;ImageDescription', );
(c'est indiqué dans config_default.inc.php, mais pas au niveau de $conf['use_exif_mapping'])
ça ne fonctionne pas ?
Pour que la récupération des méta-données depuis les données EXIF popule la base de données comme je le voulais (et notamment avec les données entrées dans EXIFManager), voici mes modifications:
1. database MySQL
pour que la date de création contienne aussi l'heure (on y stockera la date de prise de vue)
table "images" field "date_creation" => passer de "DATE" à "DATETIME"
2. include/config_local.inc.php
$conf['use_exif'] = true; // activer la récupération des EXIF pour les mettre en base $conf['use_exif_mapping'] = array( // gérer ces champs à partir des EXIF: 'date_creation' => 'DateTimeOriginal', 'name' => 'ImageDescription', 'comment' => 'UserComment', 'author' => 'Artist', );
De cette manière, on popule les champs de la base depuis les données EXIF:
- date_creation avec la date de prise de vue (donnée par l'APN)
- name avec ImageDescription (entrée dans EXIFManager dans "Description")
- comment avec UserComment (entré dans EXIFManager dans "Commentaire")
- author avec Artist (entré dans EXIFManager dans "Artiste")[/list]
3. J'ai malheureusement constaté que ce dernier mapping ne suffisait pas et j'ai du modifier ceci:
admin/include/functions_metadata.php
function get_sync_exif_data($file) { $result = array(); $exif = exif_read_data ($filename,0,true); $result['date_creation'] = $exif['EXIF']['DateTimeOriginal'] ; $result['name'] = trim($exif['IFD0']['ImageDescription']); $result['author'] = trim($exif['IFD0']['Artist']); $result['comment'] = trim(substr($exif['IFD0']['UserComment'],8)); if ($result['comment']==="") $result['comment'] = trim(substr($exif['EXIF']['UserComment'],8)); return $result; }
Ce dernier point n'est pas super propre (il y a redondance avec le tableau $conf['use_exif_mapping']), mais correspond à mes besoins. Remarquez la récupération du UserComment, où on ignore l'en-tête du UserComment qui commence par "ASCII ". Il faudrait ici gérer proprement les autres encodages.
Voilà. Avec ces modifs, la synchronisation des "meta données" me donne une database bien remplie avec les champs EXIF des images.
La suite dans d'autres posts.
PH
PS: dernière minute: il faut aussi essayer de lire UserComment dans la partie [EXIF] si il n'est pas trouvé dans [IFD0]