#1 2006-08-23 10:29:01

phgiraud
Membre
2006-08-23
37

Données EXIF et EXIFManger

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)

Code:

table "images" field "date_creation" => passer de "DATE" à "DATETIME"

2. include/config_local.inc.php

Code:

$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

Code:

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]

Dernière modification par phgiraud (2006-08-31 14:09:13)

Hors ligne

#2 2006-08-23 11:11:52

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12671

Re: Données EXIF et EXIFManger

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 :

Code:

$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 ?


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#3 2006-08-23 11:17:29

phgiraud
Membre
2006-08-23
37

Re: Données EXIF et EXIFManger

Intéressant et bien plus propre en effet. Je regarde ce que ça donne.

Hors ligne

#4 2006-08-23 11:45:07

phgiraud
Membre
2006-08-23
37

Re: Données EXIF et EXIFManger

ça marche à peu près, mais il faut modifier cette fois:

Code:

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:

Code:

$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)

Dernière modification par phgiraud (2006-08-23 14:11:46)

Hors ligne

#5 2006-08-24 09:52:43

phgiraud
Membre
2006-08-23
37

Re: Données EXIF et EXIFManger

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

Code:

$thumbnail_title = $row['comment']." / ".$row['name'] ;

Hors ligne

#6 2006-08-29 23:34:10

Marco76
Membre
2006-08-29
8

Re: Données EXIF et EXIFManger

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!

Hors ligne

#7 2006-08-30 09:06:00

phgiraud
Membre
2006-08-23
37

Re: Données EXIF et EXIFManger

I will try to translate my posts soon, in the english forum

Hors ligne

#9 2006-08-30 12:06:34

Marco76
Membre
2006-08-29
8

Re: Données EXIF et EXIFManger

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact