Bonjour
donc puisque il n'y a pas de problème lors de la récupération des diverses méta données (j'ai bien vérifié... effectivement)
En fait je soumet mon souci :
* un individu (que ce soit l'admin ou un utilisateur) upload une photo en remplissant les divers champ (auteur, date...)
* si je (administrateur) clique sur "Synchroniser les méta-donnnées", celles-ci vont écraser les donnée rentrées par la personne qui a uploadé l'image.
Ce fonctionnement ne me gène pas si ça se passe en ajout. mais si jamais par malheur dans la synchronisation, les métadonnées de la photo sont vides, ben l'effet de la synchronisation est de vider les infos rentées par l'utilisateur.
Alors j'ai esayé de trouver comment corriger ça... mais j'ai encore (beaucoup) de mal avec le code :(
je pense avoir trouvé dans admin/include/function_metadata.php la fonction update_metadata.
Je pense que juste avant l'appel à mass_updates() il faudrait passer en revue l'ensemble des lignes du tableau $fields pour, s'ils sont vide, mettre à la place les info de l'image.
tout ça vers la ligne 131...
est-ce que c'est le bon endroit ? ou est-ce qu'il vaut mieux faire ça dans mass-updates ???
ceci dit... chuis parti dans l'écriture de la chose parce que j'ai pas trouvé si quelqu'un d'autre s'était déjà cogné l'exercice
pour faire beau, faudrait peut être rajouter une constante pour dire écrasement "doux" ou "forcé" ?
Merci de votre aide.
Hors ligne
Je vois que je ne suis pas le seul à qui s'est arrivé. La synchronisation des metadonnées vide les champs saisis. PAs glop !
Je n'ai pas encore pu vérifier, mais la saisie des infos IPTC dans les proriétés de WinXP peut peut-être rendre la saisie pérenne. Je vais essayer ce soir.
Hors ligne
napi a écrit:
Je vois que je ne suis pas le seul à qui s'est arrivé. La synchronisation des metadonnées vide les champs saisis. PAs glop !
Je n'ai pas encore pu vérifier, mais la saisie des infos IPTC dans les proriétés de WinXP peut peut-être rendre la saisie pérenne. Je vais essayer ce soir.
Peut être... mais ça ne modifiera pas mon pb car je ne veux pas imposer cette manip à mes utilisateurs :!
Hors ligne
piwaille a écrit:
Alors j'ai esayé de trouver comment corriger ça...
Comment modifier le comportement tu veux dire ? ;-)
Pour poursuivre sur ton idée, et essayer de la clarifier (sans rentrer dans le fonctions du code mises en jeu) : si le champ à synchroniser avec les métadonnées contient déjà de l'information, alors je n'utilise pas la métadonnée.
Ce comportement n'est pas complexe à mettre en oeuvre. En terme de performances, il va y a voir de nombreux tests supplémentaires... Quoi qu'il en soit, c'est effectivement la fonction admin/include/functions_metadata.php:update_metadata qu'il faut changer : après la recherche des métadonnées enregistrées dans $datas, il faut refaire une passe sur tous les identifiants d'éléments et écraser dans $datas avec les valeurs existantes en base si elles existent, et ce juste avant mass_updates (qu'il est hors de question de modifier, c'est une fonction générique qui sert à bien d'autres endroits) :
remplacer
array_push($datas, $data);
par
$datas[$i] = $data;
(sinon, on va avoir du mal pour la suite) puis avant
mass_updates(IMAGES_TABLE, $fields, $datas);
insérer
$query = ' SELECT id, '.implode(',', $fields['update']).' FROM '.IMAGES_TABLE.' WHERE id IN ('.implode(',', array_keys($files)).') ;'; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { foreach ($fields['update'] as $field) { if (isset($row[$field]) and !empty($row[$field])) { $datas[$row['id']][$field] = $row[$field]; } } }
non testé, écrit à froid, si je considérais ce comportement comme légitime, c'est ce que je ferai.
Cela dit, je pense qu'il y a un problème dans la démarche. Si on utilise les métadonnées IPTC, alors on les utilise complètement, pas à moitié. Le système de synchronisation des IPTC permet par exemple de réuploader une photo avec les métadonnées mises à jour et de resynchroniser les IPTC, et hop les informations sont mises à jour dans la base. Si on ajoute le code présenté ci-dessus, ce n'est plus possible.
Hors ligne
Bonjour
désolé pour ma longue absence
z0rglub a écrit:
Cela dit, je pense qu'il y a un problème dans la démarche. Si on utilise les métadonnées IPTC, alors on les utilise complètement, pas à moitié. Le système de synchronisation des IPTC permet par exemple de réuploader une photo avec les métadonnées mises à jour et de resynchroniser les IPTC, et hop les informations sont mises à jour dans la base. Si on ajoute le code présenté ci-dessus, ce n'est plus possible.
je me doutais de ce genre de réponse ;)
c'est pour cela que j'avais mis :
piwaille a écrit:
pour faire beau, faudrait peut être rajouter une constante pour dire écrasement "doux" ou "forcé" ?
Je comprends que cette démarche puisse horrifier un "puriste" de la démarche photographique numérique... pour autant si je propose aux visiteurs de mon site ouaib de poser leurs photos, je me dois de respecter à la fois les informations globales qu'ils déponsent (titre, commentaire...) et leur façon de faire (via les moyens donnés = champs manuels)
Ptet le problème dans la démarche est dans le questionnaire d'upload... si les données IPTC sont prioritaires, alors pourquoi proposer des champs "manuels" ? :P
Non.. finalement, la démarche ne me choque pas... c'est une démache d'enrichissement des photos. L'écrasement d'une information par un champs équivalent, prioritaire mais vide c'est l'apauvrissement.
le test and !empty($row[$field] dis bien que, si IPTC est non vide il est prioritaire ?
nous somms donc d'accord ;)
En tout cas merci beaucoup z0rglub !
à la fois merci pour ce beau projet phpWebGallery, merci pour let emps que tu consacre à nos questions et merci pour le bout de code que tu a gentiment proposé plus haut ;)
Hors ligne
A vous lire (avec beaucoup d'interet et un peu de difficultés 8-) il me semble que :
1/ lors de l'upload :
- il devrait etre préciser à nos contributeurs que la galerie va lire les IPTC et qu'on souhaite que les champs soient remplis.
- si ce n'est pas le cas, PWG devrait etre capapble de remplir les iptc lors de l'enregistrement de l'image. (afin d'éviter la perte dans une synchro ultérieur)
2/ en admin il serait bien qu'il soit possible 8-) de
- décider photo par photo de soit synchroniser les iptc avec la base dans les deux sens iptc > base et base > Iptc
Cela me parait des fonctions importante pour qui veut enrichir les données de ses images.
Reste qu'il ne faut pas oublier la gestion des "hautes def" dans pwg_high....
Mon souhait serait que les trois fichiers vignette, basse def, haute def soient concerné par ses manip.
Au plaisir de vous lire et vive le PWG Team 8-)
Byl
Hors ligne
Tcherno a écrit:
A vous lire (avec beaucoup d'interet et un peu de difficultés 8-) il me semble que :
1/ lors de l'upload :
- il devrait etre préciser à nos contributeurs que la galerie va lire les IPTC et qu'on souhaite que les champs soient remplis.
- si ce n'est pas le cas, PWG devrait etre capapble de remplir les iptc lors de l'enregistrement de l'image. (afin d'éviter la perte dans une synchro ultérieur)
oui... dans la personalisation souhaitable de chaque installation, il y a la personalisation des messages de communication avec les utilsateurs
remplir les IPTC...
amha ce n'est pas un petit débat qui a déjà du avoir lieux au sein des équipes de PWG !
mon avis à 3 balles... entre les info EXIF, IPTC et XMP... je crois que la solution de la BDD est la meilleure
Sans parler des package et autres librairies à installer pour écrire les infos (et donc non disponible chez un hébergeur standard)
Hors ligne
Mouais...
Justement, je voudrais bien savoir si ce débat à eu lieu au sein du team 8-) et si cette piste est exclue ou non.
Comme je m'occupe de plusieurs galeries pour des photographes indépendants, je suis obligé d'avoir une bonne gestion des iptc car c'est ce qui sert de référence pour le copyright et les légendes des photos dans la presse et l'édition en particulier.
Or il est évident que ce légendage, indexation doit etre fait sur les fichiers avant de les faire lire par la BDD. C'est l'idéal théorie. Dans la pratique, je m'apercois qu'il est necessaire souvent de completer telle ou telle légende, de corriger telle ou telle erreur... Des choses qu'on ne voit pas forcement du premier coup a l'indexation de l'image, mais qui apparaissent au fair et a mesure des visites.
Et la ca devient compliqué avec PWG, car il faut alors corrigé les iptc de la basse def et de la haute def, rechargées les images sur le serveur et refaire une synchro..... Lourd, tres lourd. 8-(
Hors ligne
Gardez à l'espris que les images peuvent être appelées à voyager, les infos doivent donc absolument y être attachées une fois pour toute, par le biais des IPTC ou EXIF.
Les éventuelles modifications des ces infos doivent aussi être inscrites dans ces champs !! C'est incontournable.
Entrer seulement ces infos par PWG dans la BDD peut être plus simple et rester satisfaisant pour des utilisateurs de type galerie strictement perso.. il faut garder cette fonctionalité pour eux.
Pour les autres, il faut passer par un soft externe, genre Exifer, trouver les champs que l'on souhaite utiliser, les indiquer aux collaborateurs éventuels, configurer PWG 1 fois pour toute pour qu'à la synchro, ces champs soient bien en relation avec la BDD. Les mises à jours se font en premier lieu par Exifer, puis par une nouvelle synchro.
C'est ma méthode.
Le nombre et la variété des champs existant rends quasi impossible la cration d'un formulaire universel dans PWG qui servirait d'interface et entrerait à la fois dans la BDD et dans les IPTC ou les EXIF les infos désirées. Le passage par un soft dédié parait incontournable.
Il est vrai que si un programateur trouve le moyen de créer une telle page dans PWG, avec la possibilité d'entrer des infos dans les IPTC des photos par lot, ou à l'unité, avec des champs parametrables.. cela éviterait le soft externe. Toutefois, ces soft existent, ils y en a de gratuits. Laissons à nos chers dévelopeur cette énergie libre pour d'autre aspect de PWG.
eric.
Hors ligne
vimages a écrit:
Gardez à l'espris que les images peuvent être appelées à voyager, les infos doivent donc absolument y être attachées une fois pour toute, par le biais des IPTC ou EXIF.
Les éventuelles modifications des ces infos doivent aussi être inscrites dans ces champs !! C'est incontournable.
Entrer seulement ces infos par PWG dans la BDD peut être plus simple et rester satisfaisant pour des utilisateurs de type galerie strictement perso.. il faut garder cette fonctionalité pour eux.
Oh YES ! C'est clair pour moi. C'est incontournable pour les professionnels, mais aussi pour les semi-pro, les amateurs avertis, et les amateurs consciencieux. 8-)
Meme si on fait une galerie familialle, on envoit toujours des "tofs" et bon... C'est mieux quand c'est légendée et datée. Les albums de papiers classiques et sur "papier" comporte souvent des dates et des légendes. Donc, je ne suis pas sur que la coupure soit entre pros et amateurs, mais plutot entre ceux qui s'en foute et ceux qui veulent faire quelquechose de propre.
vimages a écrit:
Il est vrai que si un programateur trouve le moyen de créer une telle page dans PWG, avec la possibilité d'entrer des infos dans les IPTC des photos par lot, ou à l'unité, avec des champs parametrables.. cela éviterait le soft externe. .
Ah bon... Je vois que tu me comprends 8-)
Le pb ce n'est pas le recours au soft externe, c'est plutot les manips qu'impliquent le fait que si tu gère ça dans un soft externe, il faut que tu "recharges" tes fichiers sur le serveur. Et ça c'est galère. Pas souple du tout.
Hors ligne
piwaille a écrit:
piwaille a écrit:
pour faire beau, faudrait peut être rajouter une constante pour dire écrasement "doux" ou "forcé" ?
[...]
le test and !empty($row[$field] dis bien que, si IPTC est non vide il est prioritaire ?
pas tout à fait, ça dit que si le champ de la base de données (correspondant au champ IPTC) est non vide, alors on le conserve.
Bref, tu as raison, pour faire plus proprement, il faut rajouter une condition dans ce if
if (isset($row[$field]) and !empty($row[$field]))
devient
if (!$conf['overwrite_database_with_metadata'] and isset($row[$field]) and !empty($row[$field]))
et on aura pris grand soin de valoriser $conf['overwrite_database_with_metadata'] à true (mode forcé) ou false (mode doux) dans include/config.inc.php.
piwaille a écrit:
Je comprends que cette démarche puisse horrifier un "puriste" de la démarche photographique numérique...
Non, rassures-toi, je ne suis pas horrifié par ce genre de pratique ;-) Personnellement, je n'utilise pas les IPTC mais uniquement les EXIf pour la date de création. Et, au risque de répéter ce que j'ai déjà écrit à diverses reprises, je n'utilise pas personnellement la fonctionnalité d'ajout d'images par les visiteurs, ton problème n'est donc pas mon problème (je veux dire que j'ai du mal à me mettre à ta place).
piwaille a écrit:
Ptet le problème dans la démarche est dans le questionnaire d'upload... si les données IPTC sont prioritaires, alors pourquoi proposer des champs "manuels" ? :P
Bien joué, joli retournement, j'apprécie la réplique et ne peux que constater son évidence. La cohérence voudrait que si dans la configuration, on a choisit d'utiliser les IPTC et les EXIF, alors on ne propose pas tous les champs sur upload.php. Mais je rappelle que n'utilisant pas la fonctionnalité upload.php, ce "problème" ne m'est jamais apparu comme évident.
piwaille a écrit:
En tout cas merci beaucoup z0rglub !
Je ne suis pas le seul à travailler sur le projet. Donc, c'est l'équipe complète et tous ceux qui font du support qu'il faut remercier :-)
piwaille a écrit:
merci pour let emps que tu consacre à nos questions
Passer du temps sur des questions intéressantes n'est pas une tâche ingrate, bien au contraire ;-)
Aller, je continue de répondre, post par post pour me simplifier la vie...
Hors ligne
piwaille a écrit:
remplir les IPTC... amha ce n'est pas un petit débat qui a déjà du avoir lieux au sein des équipes de PWG !
euh, ton humble avis se trompe sur ce coup-là :-/ Je ne me souviens pas avoir discuter de ça avec Gweltas (qui n'est pas spécialement intéressé par les métadonnées IPTC il me semble).
Le seul qui en parle depuis un moment, c'est Tcherno, et je ne me souviens pas avoir donné de réponse clair là-dessus. En effet, je n'ai pas encore étudié l'implémentation d'une telle fonctionnalité. Ce qui est possible, c'est que ce genre de fonctionnalité sorte sous forme de MOD et non pas intégré à l'application standard. Comme le dit piwaille, ça risque d'être assez compliqué à gérer et générer pas mal de bugs en fonction de l'hébergeur. Distribuer la fonctionnalité sous forme de MOD permettra des mises à jour plus fréquentes.
Bref, j'y pense, mais rien n'est encore fait dans le code...
Hors ligne
Tcherno a écrit:
Et la ca devient compliqué avec PWG, car il faut alors corrigé les iptc de la basse def et de la haute def, rechargées les images sur le serveur et refaire une synchro..... Lourd, tres lourd. 8-(
Alors, si je peux me permettre, je dirais que tu utilises de mauvais outils (en dehors de PWG bien sûr). J'ai conçu la synchronisation des métadonnées pour qu'elle puisse être jouée plusieurs fois et travailler par écrasement si demandé (dans un mode tout ou rien, il ne s'agit pas des subtilités dont nous discutions plus haut avec piwaille).
Personnellement, sur mon ordinateur en local, j'ai mon répertoire "galleries" à l'image de ce qui se trouve sur mon hébergement. Je travaille en local (ajout d'images, création de miniatures, redimensionnement d'images) puis je synchronise mon hébergement:galleries avec local:galleries grâce à rsync, je lance une synchro des répertoires, puis une synchro des métadonnées. C'est simple et rapide.
Appliqué à ton cas, ma méthode donnerait :
1. modification des IPTC locallement
2. rsync
3. synchronisation des métadonnées (même si déjà synchronisées)
(pas rapport à rsync dont je ne connais pas d'équivalent sous Microsoft Windows) Maintenant, si tu es forcé de travailler avec un OS obsolete comme Microsoft Windows (en plus je le pense...), il te reste la possibilité d'installer Cygwin avec les paquets qui vont bien. Mes propos peuvent faire croire que je suis un intégriste GNU/Linux mais en fait... non pas de mais, c'est un peu vrai, aujourd'hui, je ne comprends pas pourquoi je me limitais à Microsoft Windows jusqu'en 2002.
Hors ligne
z0rglub a écrit:
Mes propos peuvent faire croire que je suis un intégriste GNU/Linux mais en fait... non pas de mais, c'est un peu vrai, aujourd'hui, je ne comprends pas pourquoi je me limitais à Microsoft Windows jusqu'en 2002.
Salut z0rglub,
Ben c'est à dire que quand tu connais des perles comme IMatch (pour rester dans le domaine de la photo) qui ne sont que pour Windows, t'imagines pas passer sur Linux ;-)
Sinon pour rsync tu as des wrappers pour Windows (un rsync.exe voire une IHM). Le hic c'est que rsync doit être installé sur le serveur et je sais pas si beaucoup de FAI le proposent (si c'est la cas je voudrais bien le savoir) !
Sinon il existe des clients FTP qui font la synchronisation mais j'ai jamais essayé.
pse
Hors ligne