Annonce

  •  » Utilisation
  •  » Changer une date par sa date EXIF

#1 2007-12-10 15:18:21

ngoc
Membre
2007-11-12
348

Changer une date par sa date EXIF

Bonjour,

Mes dates normaux (si je peux dire) sont differentes de leurs dates EXIF (Qui est vrai). Lors des convertion par lot sous xnview ou lors de l'update sur pwg, mes photos sont donc dans le desordre...

Il y a un moyen de le modifier? par lot?

Merci,

Hors ligne

#2 2007-12-10 15:56:32

vimages
Membre
2004-03-27
2429

Re: Changer une date par sa date EXIF

dans Xnview tu peux trier les vignettes d'un dossier par date Exif puis renommer par lot toutes ces vignettes, ainsi les fichiers sont nommés dans un ordre à la fois alphabétique et chronologique.

Hors ligne

#3 2007-12-10 16:16:35

VDigital
Former Piwigo Team
Paris (FR)
2005-05-04
15124

Re: Changer une date par sa date EXIF

ngoc a écrit:

Mes dates normaux (si je peux dire) sont differentes de leurs dates EXIF (Qui est vrai). Lors des convertion par lot sous xnview ou lors de l'update sur pwg, mes photos sont donc dans le desordre...

Il y a un moyen de le modifier? par lot?

Mes dates normaux ???
Je me doute que les dates Exif sont correctes sinon il y a un pb de batterie sur l'appareil.
Mais les dates "normaux", c'est quoi?
2 dates existent dans PhpWebGallery :
- date_available : c'est la date de publication sur le web (date de la 1ère synchro).
- date_creation : c'est la date disponible dans l'interface d'admin...
Une bonne définition de use_iptc_mapping et une synchro des métadata réaliseront la mise à jour par lot.

Le désordre des images se règle aisément en choisissant un $conf['order_by'] adapté.

Par défaut:
$conf['order_by'] = ' ORDER BY date_available DESC, file ASC, id ASC';

Ce que tu veux est peut-être:
$conf['order_by']  = ' ORDER BY date_creation ASC, file ASC, id ASC';

8-)


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#4 2007-12-31 00:41:38

Octobre-Rouge
Membre
2007-11-11
14

Re: Changer une date par sa date EXIF

Bonsoir,

Je ne sais pas si cela a deja été traité ailleurs sur le forum ( je n'ai pas lue les 124 autres  pages du forum) et si cela meriterait un nouveau post, mais le titre du post m'interpelle.

Je souhaiterai pouvoir effectuer un tri par défaut des photos avec le champs exif  "DateTimeOriginal" des photos et uniquement cela (pas les noms). Cela à une réel importance pour moi car ce sont les photos de mon mariage mais en provenance de mes invités et donc j'aimerais les affichés chronologiquement jusqu'a la seconde. J'ai une version 1.7 de phpWebgallery et mon site est sur FREE

la solution est elle la meme?

D'avance merci !

Dernière modification par Octobre-Rouge (2007-12-31 01:18:56)

Hors ligne

#5 2007-12-31 01:42:55

Octobre-Rouge
Membre
2007-11-11
14

Re: Changer une date par sa date EXIF

Bon comme sur mon site , j'ai positionné le plugin "Localfiles Editor",

J'ai ajouté cette ligne au fichier suivant config_local.inc.php :

<?php

/* Le fichier n'existe pas et sera créé lors de l'enregistrement par LocalFiles Editor. */

$conf['order_by']  = ' ORDER BY DateTimeOriginal ASC';


?>

J'obtiens le message d'erreur suivant:

SELECT DISTINCT(image_id)
  FROM phpwebgallery_image_category
    INNER JOIN phpwebgallery_images ON id = image_id
  WHERE
    category_id = 9

   ORDER BY DateTimeOriginal ASC
;
[mysql error 1054] Unknown column 'DateTimeOriginal' in 'order clause'

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/165/sdb/3/b/XXXXXXXXX/phpwebgallery/include/functions.inc.php on line 884

Warning: Cannot modify header information - headers already sent by (output started at /mnt/165/sdb/3/b/XXXXXXXXXX/phpwebgallery/include/functions.inc.php:867) in /mnt/165/sdb/3/b/XXXXXXXXX/phpwebgallery/include/page_header.php on line 102


Les XXXXXXetant le nom de mon site.

Bref là je pense cela se complique serieusement pour mon niveau de compétence dans la programmation. Je supprime la ligne que j'ai ajouté pour retrouver mon site sans erreur et je prends patience!

@+

Hors ligne

#6 2007-12-31 07:33:50

VDigital
Former Piwigo Team
Paris (FR)
2005-05-04
15124

Re: Changer une date par sa date EXIF

DateTimeOriginal n'est pas une colonne de la phpwebgallery_images

Seule une syntaxe correcte [MySQL] d'une clause ORDER BY portant sur les colonnes de la table phpwebgallery_images doit être utilisée dans cette variable $conf.

L'ordre de création de la table est:

CREATE TABLE `phpwebgallery_images` (
  `id` mediumint(8) unsigned NOT NULL auto_increment,
  `file` varchar(255) NOT NULL default '',
  `date_available` datetime NOT NULL default '0000-00-00 00:00:00',
  `date_creation` date default NULL,
  `tn_ext` varchar(4) default '',
  `name` varchar(255) default NULL,
  `comment` text,
  `author` varchar(255) default NULL,
  `hit` int(10) unsigned NOT NULL default '0',
  `filesize` mediumint(9) unsigned default NULL,
  `width` smallint(9) unsigned default NULL,
  `height` smallint(9) unsigned default NULL,
  `representative_ext` varchar(4) default NULL,
  `date_metadata_update` date default NULL,
  `average_rate` float(5,2) unsigned default NULL,
  `has_high` enum('true') default NULL,
  `path` varchar(255) NOT NULL default '',
  `storage_category_id` smallint(5) unsigned default NULL,
  `high_filesize` mediumint(9) unsigned default NULL,
  PRIMARY KEY  (`id`),
  KEY `images_i2` (`date_available`),
  KEY `images_i3` (`average_rate`),
  KEY `images_i4` (`hit`),
  KEY `images_i5` (`date_creation`),
  KEY `images_i1` (`storage_category_id`)
) TYPE=MyISAM;

Donc les colonnes possibles sont id, file, date_available, date_creation, ...., high_filesize et c'est tout.
Il sera toujours préférable de trier sur: id, date_available, average_rate, hit, date_creation, storage_category_id car ces colonnes sont indexées, donc à priori plus facile à trier (quoique).
Après chaque nom de colonne doit figurer le sens du tri (+ petit au + grand ou inverse) soit ASC ou DESC et suivi d'une virgule dès lors qu'une seconde colonne de tri est nécessaire (et ainsi de suite).

Ce qui va donner dans ton cas:
$conf['order_by']  = ' ORDER BY date_creation ASC';

Mais je te conseillerai (attention l'index ne sera pas utilisé):
$conf['order_by'] = ' ORDER BY date_creation ASC, name DESC, file ASC, id ASC';

La syntaxe: http://dev.mysql.com/doc/refman/5.0/fr/select.html

Et pour finir: Il faut que date_creation soit correctement renseignée ce qui nécessite d'avoir par exemple (à adapter):

$conf['use_iptc'] = true;
$conf['use_iptc_mapping'] = array(
  'keywords'        => '2#025',
  'date_creation'   => '2#055',
.../...
  );

et de faire des synchros de métadonnées en temps utile.

8-)


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#7 2008-01-07 02:59:31

Octobre-Rouge
Membre
2007-11-11
14

Re: Changer une date par sa date EXIF

Bonsoir,

J'ai compris que le champs de tri n'était modifiable avec la valeur que je demandais mais après avoir un peu fouiné dans les fichiers, j'ai trouvé

dans le fichier 'config_default.inc.php', ces lignes:

// use_exif: Use EXIF data during database synchronization with files
// metadata
$conf['use_exif'] = true;

// use_exif_mapping: same behaviour as use_iptc_mapping
$conf['use_exif_mapping'] = array(
  'date_creation' => 'DateTimeOriginal'                                    <=== valeur qui m'interresse
  );

Donc, a priori c'est ce que voulais au début de ce post, mais cela n'affiche pas les heures donc pas de tri correct quand on a plusieurs centaines de photos faites le meme jour par differents photographes! ( par exemple les photos de mon mariage) 

Au vue du message dans CREATE TABLE 'phpwebgallery_images',

Je me suis aperçu que le champs 'date_creation' avait pour valeur 'date' alors que le champs 'date_available' avait 'datetime"
( dans l'affichage des données de la base , j'avais par exemple: 'nom_image.jpg   2007-12-19 01:39:00  2007-09-01' )

J'ai donc changé dans la base 'phpwebgallery_images' la valeur 'date' par 'datetime' dans le champs 'date_creation'

Donc cela me donne cela:
....
`date_available` datetime NOT NULL default '0000-00-00 00:00:00',
`date_creation` datetime default NULL
.....

Seulement voila apres synchronisation des metadatas, dans la base j'ai maintenant par exemple :'nom_image.jpg  2007-12-19 01:39:00  2007-09-01 00:00:00 ' .

C'est un progres certe, mais j'aimerais beaucoup obtenir l'heure exacte des photos à la place des 00:00:00. ( mes photos ont bien le champs DateTimeOriginal complétés)

donc là, je séche un peu.

Le champs 'date_creation' peut maintenant accepter une valeur 'datetime' au format '0000-00-00 00:00:00' mais il y a encore un os quelquepart. Peut etre sur la definition de la variable 'DateTimeOriginal' ?

Allez Msieur dame, à votre bon coeur, pour un peu d'aide pour un marié qui voudrais bien faire voir ses photos dans un affichage horaire chronologique.

O.R

Hors ligne

#8 2008-01-07 07:40:51

VDigital
Former Piwigo Team
Paris (FR)
2005-05-04
15124

Re: Changer une date par sa date EXIF

Sujet évoqué 50 fois au moins dans d'anciens sujets, sans solution, tu peux faire machine arrière sur ta modif.
Il faudrait que nous l'implémentions en 1.8.
8-)


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#9 2008-01-21 03:09:59

Octobre-Rouge
Membre
2007-11-11
14

Re: Changer une date par sa date EXIF

VDigital a écrit:

Sujet évoqué 50 fois au moins dans d'anciens sujets, sans solution, tu peux faire machine arrière sur ta modif.
Il faudrait que nous l'implémentions en 1.8.
8-)

Salut,

Je suis du genre un peu tétu :p

Donc, j'ai fini par trouver comment faire pour avoir le champ "date_creation" correctement synchronisé avec la valeur Exif "DatetimeOriginal" complet. // la manip est sans doute similaire pour IPTC

Donc maintenant je peux trier mes photos chronologiquement et elles s'affichent bien avec dans le champ "crée le:" juste la date qui va bien sans l'heure.

Tous les problemes de date dans PhpWebGallery seront sans doute corrigés quand tout le monde sera en PHP5, puisque des fonctions comme "date_format" est implanté nativement. // donc suppression de la fonction "format_date" dans le fichier "fonctions.inc.php"

Bon comme il se fait tard, demain je mettrais mes modifs si cela interesse qqun.

@+

O.R

Hors ligne

#10 2008-01-21 08:59:16

VDigital
Former Piwigo Team
Paris (FR)
2005-05-04
15124

Re: Changer une date par sa date EXIF

Volontiers car maintenant cela va nous simplifier la mise en place pour la 1.8...
8-)


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#11 2008-01-22 00:56:36

Octobre-Rouge
Membre
2007-11-11
14

Re: Changer une date par sa date EXIF

Donc voila la recette pour un 'Date_creation' synchronisé au 'DateTimeOriginal' sauce EXIF pour la version 1.7:

D'abord une touche de Mysql:
                                           Dans la table 'phpwebgallery_images' , dans le champ "date_creation", changer le type en 'DateTime' en lieu et place de 'date'

Apres avec un ptit tire-bouche du type : Scite.exe,  trouvable chez tous les bons fournisseurs, permettra de lire le code Php ,en couleur et tout etout, avec les numeros de lignes en plus...

       Prendre la bouteille nommée: phpwebgallery-1.7.0\admin\include\functions_metadata.php

Ouvrir à la ligne 86 et ajouter : .(\d{2}).(\d{2}).(\d{2}) 
     "    à la ligne 88     "          : .'-'.$matches[4].'-'.$matches[5].'-'.$matches[6]


Cela donne :
{
   if (preg_match('/^(\d{4}).(\d{2}).(\d{2}).(\d{2}).(\d{2}).(\d{2})/', $value, $matches))
     {
       $exif[$pwg_key] = $matches[1].'-'.$matches[2].'-'.$matches[3].'-'.$matches[4].'-'.$matches[5].'-'.$matches[6];
      }


// Pour les IPTC, mais je l'ai pas gouté, il faut saupoudrer la meme quantité sur les lignes 44 et 46 : Attention sur la ligne 46, bien laisser $iptc[....


A ce moment là, si veut toaster au resultat, une petite synchro des meta et on goutte la joie d'avoir un champ 'date_creation' bien remplie mais avec une petite amertume sur la page d'affichage des photos.
La ligne 'créée le' a un petit gout de pas finie

Que cela ne tienne!

Ouvrons en encore une: phpwebgallery-1.7.0\picture.php

Ouvrir à la ligne 671 et ajouter :  ,'mysql_datetime'   => // provient de la fonction 'date_format' qui est créé dans le fichier  fonctions.inc.php ligne 526, fonction à virer quand portage de PhpWebGallery en php5 uniquement

Cela donne:                                $val = format_date($picture['current']['date_creation'], 'mysql_datetime');


tant qu'on y es, simplifions les recherches par date " created-monthly-list"
aller à la ligne 677 et ajouter :  substr (xxx,0,10)

Cela donne:                                 'chronology_date' => explode('-', substr($picture['current']['date_creation'], 0, 10))

Voila, et pour mon cas particulier ,  je rajoute dans mon include/config_local.inc.php:  $conf['order_by'] = ' ORDER BY date_creation';

A corriger sans moderation

O.R

Hors ligne

#12 2008-01-27 23:40:13

Eric B
Membre
2003-10-02
231

Re: Changer une date par sa date EXIF

Octobre-Rouge a écrit:

Je souhaiterai pouvoir effectuer un tri par défaut des photos avec le champs exif  "DateTimeOriginal" des photos et uniquement cela (pas les noms). Cela à une réel importance pour moi car ce sont les photos de mon mariage mais en provenance de mes invités et donc j'aimerais les affichés chronologiquement jusqu'a la seconde. J'ai une version 1.7 de phpWebgallery et mon site est sur FREE

Ma solution a toujours été de renommer mes images par leur dateTime au début afin de les avoir dans l'ordre chronologique sur mon PC, avant même l'upload. J'apprends seulement les possibilités d'un tel tri directement sous PWG.

La synchronisation des meta data devrait en tous cas prendre en compte le champ DateTimeOriginal, comme j'en avais déjà parlé il y a qques années. Je viens de retrouver mon vieux topic: http://forum.phpwebgallery.net/viewtopic.php?id=4169 qui est surement obsolète avec la 1.7.x mais le titre de celui ci m'a fait rappeler mon ancien truc.

Un petit bémol à ton souhait avec une solution pour finir (qui aurais pu d'ailleurs t'éviter tes modifs ds le code PWG): tu sembles avoir des photos de multiples sources et tu espères les trier à la seconde prêt. A moins d'y avoir penser au préalable et demander à tous tes invités/sources des photos de synchroniser la date et l'heure de leur APN, tu risques bien d'avoir qques secondes de décalage entre les photos. Donc le tri chronologique à la seconde risque d'être faux.
Une solution que j'applique depuis des années (avant upload): trouver des photos qui ont été prises au même instant, calculer ainsi le delta en seconde pour chq série, une série par APN. Ensuite, il s'agit appliquer ce delta en modifiant les données EXIF, par ex. avec le logiciel Exifer (Edit: Ctrl+E / Exif Data / date : appliquer l'offset qui va bien; et cocher la case "Apply Creation date to Date modified and Date digitized").

Hors ligne

#13 2008-01-28 07:19:12

VDigital
Former Piwigo Team
Paris (FR)
2005-05-04
15124

Re: Changer une date par sa date EXIF

Eric B a écrit:

... (avant upload): trouver des photos qui ont été prises au même instant, calculer ainsi le delta en seconde pour chq série, une série par APN. Ensuite, il s'agit appliquer ce delta en modifiant les données EXIF, par ex. avec le logiciel Exifer (Edit: Ctrl+E / Exif Data / date : appliquer l'offset qui va bien; et cocher la case "Apply Creation date to Date modified and Date digitized").

A noter quelque part: par exemple dans le wiki.
Merci.
8-)
PS: L'objectif étant de trouver une solution plus simple et non destructrice.


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#14 2008-01-28 08:15:22

Nicco
Membre
Paris - Val de Marne
2006-05-12
1794

Re: Changer une date par sa date EXIF

pour regler le probleme de delta je fai sla meme chose : exifer ...
et pour me simplifier la vie avec les autres personnes qui font des photos en meme temps que moi on fait ce que j appele une photo de synchro :
au meme instant on se prend tous en photos en train de faire cette photo ... comme ca elle est facile a reconnaitre et j ai un point de reference pour remettre a la meme date et heure toutes les photos ;-]


Nicco Starrrr ..... voici ma galerie http://gallery-nicco.no-ip.org & ma passion http://bd-nicco.no-ip.org
version PWG 1.7.1 + de nombreux plugins actifs (trop pour les énumérer)

Hors ligne

#15 2008-02-02 00:13:16

Octobre-Rouge
Membre
2007-11-11
14

Re: Changer une date par sa date EXIF

Eric B a écrit:

Un petit bémol à ton souhait avec une solution pour finir (qui aurais pu d'ailleurs t'éviter tes modifs ds le code PWG):

Bonsoir,

Non, je pense que les modifs étaient necessaire car PWG ne faisaient pas de trie sur l'heure de la photo, seulement sur la date.
Maintenant les photos peuvent etre classés correctement et PWG 1.7 a un petit defaut en moins. (hélas la 1.7.1 n'est pas corrigé)

Effectivement, apres les corrections apportés, je me suis retrouvé avec un decalage sur les horaires. Et sans les modif, je ne l'aurais jamais vraiment visualiser dans mes differentes galeries.
Bref j'ai finie evidement par appliquer le delta sur certaines series de photos par rapport à un référent mais en touchant au Exif et re'upload'.

Et le truc de Nicco est réellement simple à mettre en oeuvre pour avoir tous les delta horaires des APN.


Ensuite, il est vrai que l'on pourrai imaginer un petit plugin qui permettrai d'indiquer le decalage horaire à appliquer si on le desire sur tel serie de photo à partir du champs DateTimeOriginal. Mais là on s'ecarte de ce sujet

Sujet qui est, à mon avis à cloturer en RESOLU, mais comme je ne suis pas l'auteur du POST je ne peux le faire.

Faut il mettre ma recette dans le WIKI?

Cordialement,
O.R

Hors ligne

  •  » Utilisation
  •  » Changer une date par sa date EXIF

Pied de page des forums

Propulsé par FluxBB

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