8768 sujets

Développement web côté serveur, CMS

Bonjour,

En ce moment je prototype des solutions en lien avec les images (gestion des images, compression WebP, etc.)

Je cherche un moyen de lier des données aux images. Une première solution serait de lier en base de données, via une ID, toutes les informations relatives à l'image. Cette première solution serait peut-être la plus intéressante pour faire une recherche sur les images du site et surtout pour les gérer dans une bibliothèque (comme pour WordPress par exemple).

Mais il s'avère que, depuis 20 ans, existe les métadonnées XMP embarquées avec l'image. Celles-ci, conceptualisées par Adobe pour compléter les données EXIF, servent en première intention à garder les modifications d'une image sans destruction, sans toucher au fichier source. Cependant on peut rajouter des titres, des descriptions, des tags, etc. Ces métadonnées en format XML remplacent avantageusement - paraît-il - les métadonnées IPTC.

Que pensez-vous de cette approche ?
Personnellement j’utilise une technique de ce genre depuis des années, après avoir sans succès essayé de faire des choses avec EXIF. J’ignorais qu’Adobe avait une approche similaire (je n’utilise plus de produit Adobe depuis que j’ai constaté qu’ils envahissaient mon PC, voire l’annexaient, cf la guerre actuelle)
Cela n’empêche pas si on veut d’avoir un programme sur le serveur qui indexe ces données sur une base de données. Certes, cela constitue une violation de l’unicité des données, mais si l’outil d’indexation est bien fait, on peut considérer ça comme une extension de la base Smiley cligne
Le format d'Adobe, c'est un truc libre désormais, c'est même une norme ISO. Je vais réfléchir pour penser le truc comme une extension de la base, c'est pas bête.

Et toi personnellement du coup, tu fais comment ? C'est quoi ta "technique de ce genre" ?

Si d'autres veulent intervenir, je suis preneur.
Modifié par Olivier C (08 Sep 2022 - 10:30)
Il s’agit de gérer un « album photo »
L’album photo est une suite de pages, chacune correspondant à un évènement, par exemple un concert, une soirée, un stage etc,
La technique simpliste que j’utilise consiste à créer un dossier de fichiers par page, donner un nom significatif au dossier et y mettre les fichiers jpg des photos.
J’ai ensuite un programme d’indexation qui fait les choses suivantes: créer une vignette de petite taille, créer une image de taille adaptée aux écrans d’ordinateurs ou de tablette, créer un objet xml avec ne nom de l’image (auquel on pourra ajouter d’autres propriétés) et le mettre dans un fichier album.xml qui décrit toute la page.

L’administrateur dispose d’un outil qui fonctionne de la façon suivante : afficher les vignettes sur une page puis faire des drag & drop pour changer l’ordre des images ou ajouter des propriétés aux images. Tout cela est stocké dans le ficher album.xml. On pourrait également mettre les infos sur la base de données, ce qui permettrait de les retrouver en dehors du contexte, mais cela ne m’a pas paru nécessaire jusqu’à présent.

L’utilisateur affiche la page. Les vignettes sont dans l’ordre défini par l’administrateur avec les infos qu’il a ajoutées. En cliquant sur la vignette ça ouvre l’image en pleine page. En cliquant sur cette deuxième image on peut afficher la photo originelle qui est généralement plus grande que l’écran et la télécharger.

Voilà comment fonctionne cette petite appli basique.
Je vais me renseigner sur les infos xml Adobe pour voir dans quelle mesure je peux améliorer le mécanisme.
Merci pour ton retour. Je ne sais pas encore comment je vais procéder, mais je vais faire en sorte que chaque image soit un item indépendant, relié éventuellement à un article ou une galerie par une table relationnelle, en base de données. C'est pour l'image en elle-même que je me pose la question de l'implémentation des données la concernant.

Pour cette dernière, je vais peut-être garder l'idée de la base de données pour les informations de titre, auteur, description... tout en laissant à l'EXIF les caractéristiques techniques de l'image (définition, résolution...), ce qui éviterait les redondances de données. En ce sens là l'idée d'une "extension" de la base me plait.

Comme toujours, ce qui demande le plus de temps n'est pas le codage, mais la conception.
Bon alors, j'ai creusé un peu plus :

Les métadonnées, pour les récupérer, ça va il y a plein d'outils pas trop lourds qui facilitent la vie.

Pour les écrire par contre, là, c'est tout un art. Sous node.js, environnement à partir duquel je développe, il existe un package npm de référence en la matière (semble-t-il), node-exiftool, faisant appel à un script écrit en PERL qu'il faut préalablement mettre en place. Alors, ça se fait, mais ça ne me plaît pas trop de dépendre d'une configuration à ce point spécifique pour extraire des données (et quid des performances ? à évaluer là encore...). Éventuellement ok pour lire des données en bonus dans une partie admin, pour faire des propositions d'autocompletion pour des formulaires par exemple, mais pas en première intention.

En tout cas, j'ai appris une chose, je sais maintenant pourquoi les métadonnées peuvent représenter jusqu'à 40% du poids total d'un JPEG : outre le XML, qui n'est pas le format le plus léger, les JPEGs peuvent embarquer une miniature (pour prévisualiser les photos sur un appareil par exemple). On en apprend tous les jours...
Modifié par Olivier C (09 Sep 2022 - 16:19)
Bonjour,
Si j'ai bien compris votre question, vous souhaitez gérer un ensemble d'images , et les lier à des informations...
Si vous vous limitez au format jpg, vous pouvez utiliser les métadonnées IPTC et XMP embarquées. Il y a pléthore de "champs" prévus dans ces normes.
Si vous avez d'autres formats d'images qui supportent pas (ou mal) les métadonnées embarquées (voir formats supportés dans le site de ExifTool) , une solution est de se limiter au format XMP , avec lequel on peut (si nécéssaire) ranger les métadonnées dans des fichiers XMP compagnons (sidecar) ; chaque photo sera accompagnée d'un petit fichier texte XMP contenant les métadonnées.
Les logiciels de catalogage savent gérer ces paires de fichiers commodément.
Je prends l'exemple de XnViewMP que je connais bien.
Il est capable d'éditer une vingtaine de métadonnées, au choix en IPTC, XMP ou XMP sidecar. (je suggère d'en utiliser bien moins, à cause du temps considérable que ça prend).
XnViewMP gère dans une base de données interne les métadonnées suivantes : mots-clés, mots-clés hiérarchisés, notation par étoiles (rating), notes de couleur, et partiellement les visages identifiés (par d'autres logiciels) .
C'est à travers trois écrans (Catégories, Filtre des catégories, Groupes de catégories) que cette base de donnée et les métadonnées correspondantes sont gérées.
D'autres métadonnées (copyright, lieux, légende, titre ...) sont éditables , mais pas gérées dans la base de données.

Par la suite, vous pourrez exporter tout ou partie de ces données au format csv par exemple, soit directement depuis XnViewMP, soit via une commande ExifTool.
FastPhotoTagger est un autre logiciel qui permet une plus grande souplesse pour tout ceci, mais d'un abord un peu plus austère.
J'ai écrit une littérature abondante sur ces sujets dans mon site, que vous trouverez en cherchant tuto xnviewmp ou tuto exiftool par exemple ...
Modifié par michel038 (16 Sep 2022 - 14:52)