Postscript: my hosting service does have exif support enabled in php. Output of exif section of phpinfo:
exif
EXIF Support enabled
EXIF Version 1.4 $Id: exif.c,v 1.173.2.5.2.25 2008/03/12 17:33:14 iliaa Exp $
Supported EXIF Version 0220
Supported filetypes JPEG,TIFF
Hors ligne
I just found this thread: http://forum.phpwebgallery.net/viewtopi … 70&p=1 where I found how to get at the metadata. Slowly, I learn! :-)
part of the metadata.php output:
no IPTC information
EXIF Fields in sample.jpg
Array
(
[FileName] => sample.jpg
[FileDateTime] => 1229315052
[FileSize] => 182652
[FileType] => 2
[MimeType] => image/jpeg
[SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, COMMENT, EXIF, INTEROP, MAKERNOTE
[COMPUTED] => Array
(
[html] => width="800" height="600"
[Height] => 600
[Width] => 800
[IsColor] => 1
[ByteOrderMotorola] => 0
[CCDWidth] => 1mm
[ApertureFNumber] => f/3.5
[UserComment] =>
[UserCommentEncoding] => UNDEFINED
[Thumbnail.FileType] => 2
[Thumbnail.MimeType] => image/jpeg
)
[Make] => Canon
[Model] => Canon PowerShot G9
[Orientation] => 1
[XResolution] => 124/1
[YResolution] => 124/1
[ResolutionUnit] => 2
[DateTime] => 2008:12:12 21:27:06
[YCbCrPositioning] => 1
[Exif_IFD_Pointer] => 184
[THUMBNAIL] => Array
(
[Compression] => 6
[XResolution] => 180/1
[YResolution] => 180/1
[ResolutionUnit] => 2
[JPEGInterchangeFormat] => 3508
[JPEGInterchangeFormatLength] => 2935
)
[COMMENT] => Array
(
[0] => Putting it back together, and trying to figure out where the two leftover screws should have gone.
)So, apparently it is called "comment" not caption. Or UserComment? Or COMMENT? Or what? I'm confused. I tried "Comment" and "UserComment" instead of "Caption" in the show-exif-fields part. No comment-related field shows up in the Synchronize window, however, so I'm not doing that right.
When I tried adding to use-exif-mapping:
$conf['use_exif_mapping'] = array( 'date_creation' => 'DateTimeOriginal', 'caption' => 'UserComment' //changed. line added. pwg blew up );
The gallery blew up rather spectacularly. (At that point the show_exif_fields did have " 'UserComment',"). So, obviously, that line is necessary for something to happen. It just needs to be right ... :D
Dernière modification par quixote (2008-12-15 05:53:52)
Hors ligne
Bonjour,
Ce sujet a été abordé en 2008 mais hélas sans laisser de trace durable, cela semblait convenir à mon besoin !
Je relance donc .... puisque le forum semble réactif !
J'ai un site web d'association mutualisé OVH avec une installation Piwigo à jour qui fonctionne bien.
Nous sommes plusieurs photographes à verser des photos avec des métadonnées IPTC préchargées en batch avec XnViewMP ou Photoshop.
La configuration est le thème SimpleNG et le plugin Fotorama
Un site banc test est visible ici : https://encoreunjour.fr/photos/ implanté temporairement sur https://encoreunjour.fr
J'ai utilisé LocalFile Editor pour invalider l'utilisation et l'affichage des Exifs et le contraire sur les IPTC (validation et affichage)
En bas de l'image, on peut voir les champs IPTC sélectionnés en appuyant sur le bouton ..... EXIF (!)
L'objectif est de faire apparaitre sous les photos ou en superposition un champ texte comportant la concaténation ['iptc_Caption_Abstract' => '2#120'] + ['iptc_City' => '2#090'] + ['iptc_Writer_Editor' => '2#122'] par exemple
Cézanne et la Montagne Sainte Victoire - Aix en Provence - Photo Albert Dupont
Je sais faire apparaitre le champ Description de Piwigo en bas de l'image, cela va dans le bon sens. Mais cela ne semble pas être très utile : nous ne souhaitons pas taguer ce champ séparément en plus des champs ITPC
J'ai essayé de trouver comment adapter CSS ou TEMPLATE dans LocalFile Editor sans comprendre comment et où s'appliquent les modifications (je connais les CSS ....) (manque de documentation ou exemple ?)
Bref, un exemple serait super intéressant pour comprendre comment on adapte un affichage.
Je fais ce type d'affichage sur un PC avec par exemple XnviewMP ou Faststone en concaténant des champs IPTC et j'aurais aimé reproduire cette fonctionnalité sur Piwigo .....
J'ai essayé ChatGPT, mais ..... pas terrible
Merci pour votre aide
Philippe
Hors ligne
Si j'ai bien compris:
Tu souhaites afficher le contenu des IPTC sous la photo , directement (sans action sur un bouton)?
Dans ton exemple:
Cézanne et la Montagne Sainte Victoire - Aix en Provence - Photo Albert Dupont
Hors ligne
Oui, exactement, je souhaite avoir une galerie photo légendée comme dans l'exemple. L'idéal étant que chacun puisse sélectionner le ou les champs de son choix dans la configuration faite par l'administrateur. Perso, l'exemple est déjà un grand pas ....
Hors ligne
Sauf erreur de ma part (ma config date de 2007/2008)
Si les champs ci-dessous sont définis dans la config locale.
$conf['use_iptc_mapping'] = array(
'keywords' => '2#025',
'author' => '2#122',
'name' => '2#105',
'comment' => '2#120'
);
Ils alimentent automatiquement les données de la photo.
Si tu souhaites un traitement plus spécifique.
Avec le thème SimpleNG, qui charge systématiquement les métadonnées.
Il faudra simplement modifier ou faire un template extension du fichier picture.tpl.
Hors ligne
J'ai bien défini un champs City dans $conf['use_iptc_mapping'] = array pour pouvoir tester. Bien entendu, ce champ a été préalablement chargé sur plusieurs photos.
Mais là où je coince .... c'est sur "Il faudra simplement modifier ou faire un template extension du fichier picture.tpl"
Je vois bien que le fichier picture.tpl est un mélange de HTML et d'autre chose dont je n'ai pas de documentation de syntaxe. Et d'autre part, je ne sais pas comment fonctionne un template extension ... un fichier qui va s'insérer où ?
En cherchant avec ChatGPT, j'ai trouvé cet exemple à insérer quelque part (?) dans picture.tpl sans pouvoir savoir si cette syntaxe est valable ...
{if isset($metadata.iptc)}
<div class="iptc-fields">
{if isset($metadata.iptc.2#080)}<div class="iptc-author">Auteur : {$metadata.iptc.2#080}</div>{/if}
{if isset($metadata.iptc.2#090)}<div class="iptc-city">Ville : {$metadata.iptc.2#090}</div>{/if}
{if isset($metadata.iptc.2#101)}<div class="iptc-country">Pays : {$metadata.iptc.2#101}</div>{/if}
{if isset($metadata.iptc.2#116)}<div class="iptc-copyright">© {$metadata.iptc.2#116}</div>{/if}
</div>
{/if}
Cela me servira pour construire la légende (sans jeu de mot ...)
Hors ligne
Un exemple pour expliquer une possibilité.
RQ:j'ai juste testé le contenu des données et la syntaxe.
Pense à sauvegarder la modification dans un template extension pour ne pas perdre tes modifications lors d'une prochaine mise à jour du thème
les modifications à faire sont écrites en bleu
// dans le fichier .../themes/SimpleNg/template/picture.tpl vers la ligne 80
{if isset($metadata[1]['lines'])}
{if isset($metadata[1]['lines']['iptc_Caption_Abstract'])}
{if isset($metadata[1]['lines']['iptc_City'])}
{if isset($metadata[1]['lines']['iptc_Writer_Editor'])}
{$COMMENT_IPTC = "`$metadata[1]['lines']['iptc_Caption_Abstract']` - `$metadata[1]['lines']['iptc_City']` - `$metadata[1]['lines']['iptc_Writer_Editor']`"}
{/if} {/if} {/if}
{/if}
<figure id="theImage">
{$ELEMENT_CONTENT}
{if isset($COMMENT_IMG)}
<figcaption>{$COMMENT_IMG}</figcaption>
{/if}
{if isset($COMMENT_IPTC)}
<span id='mypptc'> {$COMMENT_IPTC}</span>
{/if}
</figure>
Dernière modification par gbo (2025-06-28 10:11:19)
Hors ligne
MERCI pour le détail de votre réponse !
J'ai fait les modifs en utilisant LocalFiles Editor qui me fait une copie (à modifier) de fichier
distributed/samples/my-picture.tpl
Ce fichier doit ensuite remplacer celui d'origine de SimpleNG ?
ou Piwigo reconnait l’existence du fichier dans /template-extension ?
ou ce repertoire /template-extension ne sert que d'archivage aux fichiers personnalisés ?
Hors ligne
Comment utiliser les Template-extensions.
Avec Piwigo, il existe une technique pour modifier les Thèmes à votre guise, tout en conservant vos modifications lors de la mise à jour des thèmes. Attention, l'utilisation de Local Files Editor est réservée aux utilisateurs avancés. Voir ici la documentation : https://doc-fr.piwigo.org/hebergez-votr … les-editor
1/ Tout d'abord, vous devez installer le plugin Local Files Editor. Peut-être l'avez-vous déjà.
2/ Dans le 1er onglet, vous allez activer le lien d'extension de template pour qu'il apparaisse dans le menu latéral sous /Configuration Entrez le code suivant et sauvegardez-le.
$conf['show_template_in_side_menu'] = true ;
Vous devriez maintenant voir Template dans le menu latéral.
3/ Retournez dans l'éditeur de fichiers locaux du plugin, onglet template.
Créez un nouveau fichier, donnez-lui un nom personnel et choisissez le modèle dans le menu déroulant.
Modifiez ce fichier template comme vous le souhaitez et enregistrez-le. Il sera sauvegardé dans le dossier /local.
4/Cliquez dans le menu latéral sur Templates sous Configuration. On y trouve un tableau de 4 colonnes
Choisissez votre fichier modifié avec le nouveau nom dans la 1ère colonne et sur la même ligne, 2e colonne, choisir le fichier qu'il va remplacer. Dans la 4e et dernière colonne, choisissez le thème pertinent. Sauvegardez ensuite la page.
Hors ligne
Merci pour l'aide concernant picture.tpl.
En résumé, voici les ajouts apportés pour établir un sous titrage à l'aide des champs IPTC avec les lignes précédentes et suivantes pour repérage :
<!-- imageToolBar -->
<div id="theImage">
{$ELEMENT_CONTENT}
<!-- Show personnal photo caption build from IPTC fields -->
{$tiret = false}
{if isset($metadata[1]['lines'])}
<p>
{if isset($metadata[1]['lines']['iptc_Object'])}
{$metadata[1]['lines']['iptc_Object']}
{$tiret = true}
{/if}
{if isset($metadata[1]['lines']['iptc_Caption_Abstract'])}
{if $tiret}
</p><p>
{/if}
{$metadata[1]['lines']['iptc_Caption_Abstract']}
{$tiret = true}
{/if}
{if isset($metadata[1]['lines']['iptc_City'])}
{if $tiret}
 - 
{/if}
{$metadata[1]['lines']['iptc_City']}
{$tiret = true}
{/if}
{if isset($metadata[1]['lines']['iptc_Sublocation'])}
{if $tiret}
 - 
{/if}
{$metadata[1]['lines']['iptc_Sublocation']}
{$tiret = true}
{/if}
{if isset($metadata[1]['lines']['iptc_Country_Primary_Location_Name'])}
{if $tiret}
 - 
{/if}
{$metadata[1]['lines']['iptc_Country_Primary_Location_Name']}
{$tiret = true}
{/if}
{if isset($metadata[1]['lines']['iptc_By_line'])}
{if $tiret}
</p><p>
{/if}
Photo :  {$metadata[1]['lines']['iptc_By_line']}
{/if}
</p>
{/if}
{if isset($COMMENT_IMG)}
<p>{$COMMENT_IMG}</p>
{/if}
{if isset($U_SLIDESHOW_STOP) }
<p>
[ <a href="{$U_SLIDESHOW_STOP}">{'stop the slideshow'|@translate}</a> ]
</p>
{/if}
</div>
Il me reste à reporter le même type d'ajout (ou variante) pour le tableau de vignettes puis sur l'affiche plein écran avec Fotorama ....
Mais .... quel est le fichier à modifier pour ce tableau de vignettes (mettre une légende plus ou moins détaillée sous chaque vignette) ? Par quel moyen d'édition (LocalFiles Editor ne propose que 4 noms de fichiers tpl ...) ?
Pour un affichage sur le plein écran de Fotorama, je vais chercher à le faire en surimpression sur la photo, mais si je comprends, Fotorama a son propre picture.tpl. Comment l'atteindre avec LocalFiles Editor ?
Hors ligne
En standard, il me semble que Piwigo, ne lit les méta-data que lorsque l'on accède sur la page picture.php
avec l'option"?metadata"
ou en forçant la lecture de méta-data
pwg_set_session_var('show_metadata', true); ce que fait le thème SimpleNG.
Sans développements très spécifique, je ne vois pas comment afficher les informations dans les pages index.php
RQ: Je ne connais pas Fotorama .
Une solution de contournement (juste une idée) serait peut-être un traitement via Xnview, pour concaténer dans le champ 'iptc_Caption_Abstract' ' 2#105' de chaque photo les autres champs élémentaires contenus dans les iptc
En principe ce champ doit en standard alimenter {$COMMENT_IMG} sur la page picture et son homologue sur les pages index.php.
Cela reste à vérifier.
Hors ligne