Exif et métadonnées ID3

Transcription

Exif et métadonnées ID3
Exif et métadonnées ID3
Par Thomas MAUL, 4D Germany
Note technique 4D-201007-14-FR
Version 1 - Date 1 juillet 2010
Résumé
Note traduite de l'anglais par Stéphanie Tirtiat (4D S.A.S., Support Technique International).
EXIF (Exchangeable image file format) est une spécification de format de fichier image, vidéo ou audio
(JPEG, TIFF, RIFF, WAVE, MP3...) utilisée par les appareils numériques, qui ajoute des balises de
métadonnées (date et heure, réglages de l'appareil, informations géographiques, droits d'auteur...).
Cette note technique présente le composant tierce partie ExifTool (en code source) à utiliser avec 4D v11
SQL. Avec 4D v12, de nouvelles commandes 4D ou l'utilisation d'un module PHP permettent de traiter
directement les méta-données des images.
4D Notes techniques
Copyright © 1985-2010 4D SAS - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte.
L'auteur et 4D SAS déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D SAS. La fourniture
du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence électronique figurant sur le support
du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés ou reproduits sur quelque support que ce soit et de
quelque manière que ce soit, que conformément aux termes de cette licence.
Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par photocopie,
enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que l'usage personnel de l'acheteur,
et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SAS.
4D, 4ème Dimension, 4D Server, ainsi que tous les logos sont des marques enregistrées de 4D SAS.
Windows,Windows NT, Vista, Windows 7, Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.
ICU © Copyright 1995-2010 International Business Machines Corporation and others - iODBC © Copyright 1995-2006: Open Linck Software - LibZip ©
Copyright 2006 Dieter Baron and Thomas Klausner. OpenSSL : OpenSSL Project for use in the OpenSSL Toolkit. - SYNAPSE © Copyright 1994-2010 Synapse
Developement - XALAN © Copyright 2010 4D SAS/ XERCES © Copyright 2010 4D SAS - zLib © Copyright 1995-2010 Jean-Loup Gailly and Mark Adler.
Apple, Macintosh, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc. Mac2Win Software Copyright © 1990-2002 est
un produit de Altura Software,Inc.
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.
1/9
Exif et métadonnées ID3 en 4D v11 SQL et 4D v12
NdT : La note technique US ne comportait que des éléments sur le composant ExifTool à utiliser avec 4D
v11 SQL.
Ce composant n'est plus nécessaire avec 4D v12 puisque vous disposez désormais de commandes
spécifiques pour traiter les méta-données des images. L'utilisation du module PHP vous propose également
des solutions. Ces nouveautés ont été rajoutées et vous sont présentées en deuxième partie de cette note.
Tables des matières
•
•
•
•
Résumé
Introduction
ExifTool de Phil Harvey
Exif_Component
- Structure du composant
- Exif_ReadAllTags
- Exif_WriteTags
- Gestion Date/Time
- Dialogue de test dans le source du composant
- Notes pour l'installation du composant
• 4D v12 et les EXIF
- Deux nouvelles commandes
- Les constantes
- Module PHP
• Conclusion
Résumé
EXIF signifie "Exchangeable Image File Format".
C'est une spécification de format de fichier pour les images utilisées par les appareils numériques.
Les balises de métadonnées peuvent contenir un large éventail d'information, notamment : information de
date et d'heure, paramètres de prise de vue tels que vitesse d'obturation ou ISO, image miniature en vue de
l'utilisation de la photo par des logiciels gestionnaires de photos, ainsi que d'autres informations descriptives
et relatives aux droits d'auteurs, etc...
Cette note technique présente un composant 4D v11 qui édite les balises EXIF. Elle est accompagnée d'une
base de données exemple utilisant le composant.
Introduction
Cette note technique présente un composant wrapper pour l'application console open source (GPL)
ExifTool. Il propose un sous-ensemble des fonctionnalités fournies avec quelques méthodes simples à
2/9
utiliser. Parmi ces fonctionnalités incluses, on trouve la possibilité d'ajouter, supprimer et modifier des
balises existantes. Puisque le code source est fourni, le composant 4D v11 pourrait être aisément modifié et
étendu pour les futurs besoins et selon les futures versions de l'application ExifTool.
ExifTool par Phil Harvey
Cet outil vous permet de lire, écrire et modifier les méta-données. C'est le fondement du composant Exif
inclus dans cette note technique.
ExifTool est une librairie Perl mutli-plateforme ainsi qu'une application en lignes de commande pour la
lecture, l'écriture et la modification des méta-données d'un fichier image, audio ou vidéo.
ExifTools supporte beaucoup de types différents de métadonnées, notamment EXIF, GPS, IPTC, XMP,
JFIF, GeoTIFF, ICC Profile, Photoshop IRB, FlashPix, AFCP et ID3, ainsi que les notes des fabricants
de nombreux appareils numériques tels que Canon, Casio, Fujifilm, HP, JVC/Victor, Kodak, Leaf,
Minolta/Konica-Minolta, Nikon, Olympus/Epson, Panasonic/Leica, Pentax/Asahi, Ricoh, Sanyo,
Sigma/Foveon et Sony.
Cette librairie a été publiée sous la même licence que Perl, utilisant la GP (Licence publique générale GNU)
ou l'"Artistic License", comme affichée sur le site de Perl :
http://dev.perl.org/licenses/
Il est important de noter que le composant de cette note technique est basé sur cette application. Sur le site
web de ExifTool, vous trouverez des informations concernant les formats supportés en lecture, écriture et
création. Pour plus de renseignements, visitez le site web de ExifTool à l'adresse suivante :
http://www.sno.phy.queensu.ca/~phil/exiftool/
Le composant Exif_Component
Structure du composant
Le composant est fourni comme un composant 4D v11 SQL. Si vous utilisez encore 4D 2004, vous
pouvez copier le contenu des méthodes dans une structure 4D 2004 avec quelques modifications
mineures. Vous aurez besoin de modifier principalement le chemin d'accès à ExifTool pour utiliser le
dossier "Extra" plutôt que le dossier "Resources". Le code ne peut pas être utilisé avec 4D 2003.
Pour l'utiliser avec 4D v11 SQL, il vous suffit de copier-coller le bundle (un dossier sous Windows)
Exif_Component.4dbase dans le dossier "Components" à côté de votre structure. Il contient le
composant compilé, ExifTool, la licence GPL, le code source de ExifTool et le code source du
composant lui-même:
3/9
Contenu du dossier "Components"
Exif_ReadAllTags
Cette commande lit toutes les balises disponibles d'un fichier/chemin donné. Le document peut être
une image, un fichier audio ou un film, suivant les formats supportés par ExifTool. La commande
retourne deux tableaux de type texte listant toutes les balises incluses et leurs valeurs correspondantes :
$err := Exif_ReadAllTags(Chemin; ->ArrayTextTagNames; ->ArrayTextTagValues)
Paramètres
Path
ArrayTextTagNames
ArrayTextTagValues
Description
Chemin complet vers le fichier, chemin HFS sur Mac
Pointeur vers tableau Texte, retourne une liste de toutes les balises
incluses
Pointeur vers tableau Texte, retourne la liste des valeurs, correspondant
aux noms des balises (toujours de même taille)
Codes d'erreur possibles :
Numéro d'erreur
-1
-2
-3
-4
-5
Description
Nombre de paramètres erronné
Dossier "Resources" du composant invalide (ExifTool manquant,
réinstaller le composant)
Paramètres invalides ($2 ou $3 ne sont pas des pointeurs vers tableau
texte)
Chemin invalide ($1)
Réponse invalide d'ExifTool - erreur inconnue
Exif_WriteTags
4/9
La commande écrit (ou supprime) des balises spécifiques d'un fichier donné dont le chemin est passé
en paramètre. Le document peut être une image, un fichier audio ou vidéo, selon les formats supportés
par ExifTool.
$err := Exif_WriteTags(Path;->ArrayTextTagNames;->ArrayTextTagValues;1;Vrai)
Paramètre
Path
ArrayTextTagNames
ArrayTextTagValues
Action
NoBackup
Description
Chemin complet vers le fichier, chemin HFS sur Mac
Pointeur vers tableau Texte avec le nom des balises à écrire ou modifier
Pointeur vers tableau Texte, retourne la liste des valeurs, correspondant
aux noms des balises (toujours de même taille)
1 : ajouter
2 : modifier
3 : supprimer
Vrai : ne pas créer de copie de sauvegarde du fichier,
Faux : en créer une (par défaut)
Codes d'erreur possibles :
Numéro d'erreur
-1
-2
-3
-4
-5
Description
Mauvais nombre de paramètres
Dossier "Resources" du composant invalide (ExifTool manquant,
réinstaller le composant)
Paramètres invalides ($2 ou $3 ne sont pas des pointeurs vers tableau
texte)
Chemin invalide ($1)
Réponse invalide d'ExifTool - erreur inconnue
Passez seulement les balises et valeurs que vous voulez modifier ; il n'est pas nécessaire de passer des
valeurs qui doivent rester inchangées. Pour ajouter des mots-clés vous avez besoin d'utiliser un élément
de tableau pour chacun d'eux (avec la balise <keyword>). Toutes les balises ne peuvent pas être
modifiées.
Action = 1 ajoute des balises à la liste existante. Utilisez-le uniquement lorsqu'il n'existe pas de
balises, ou pour des balises qui ont des valeurs multiples, comme les mots-clés.
Pour modifier des balises existantes, utilisez Action = 2.
Action = 3 permet de supprimer des balises de la liste ; normalement, vous passez une chaîne de valeur
vide (""). Si la valeur a un contenu, seules les balises avec cette valeur sont supprimées. Ceci est utile
pour les balises telles que par exemple keyword = "vacation".
Gestion date et heure
Pour les dates, il y a des balises spéciales pour lesquelles Action a une signification spéciale. La balises
"AllDates" s'adresse à tous les champs date/heure. "DateTimeOriginal" est la date d'origine,
"CreateDate" la date de création, et "ModifyDate" la date de modification.
5/9
Les balises "Date/Heure" ont souvent besoin d'être corrigées, à cause de paramètres de réseau horaire
incorrects ou des différences d'heure d'un appareil à un autre.
Action = 1 augmente l'heure, Action = 3 diminue l'heure, et Action = 2 fixe une nouvelle valeur.
La valeur peut être passée comme une durée ou comme une chaîne complète.
Des exemples de durée sont "1" pour une heure ou "1.5" pour 90 minutes. Une chaîne complète de date
et heure est attendue, comme "0:0:1 0:0:0" pour un jour plein ou "0:0:0 0:2:30" pour 150 minutes soit 2
heures 30 minutes.
La commande crée automatiquement une copie/sauvegarde du fichier original, de sorte que même avec
des balises erronées ou un traitement erroné, l'image reste intacte. Vous pouvez désactiver ce
comportement ($5 = Vrai) si vous avez déjà une sauvegarde du fichier. La sauvegarde est nommée
"Nom_du_fichier.original".
La sauvegarde est créée seulement une fois, pour préserver la version originale, plutôt que de
sauvegarder les modifications apportées plus tard.
La version courante de ExifTool supporte la lecture et l'écriture des images, mais uniquement la lecture
des fichiers mp3 (balises ID3). Référez-vous au site web ci-dessous pour une liste complète des
fonctionnalités supportées et des mises à jour :
http://owl.phy.queensu.ca/~phil/exiftool/index.html
Dialogue de test dans le source du composant
Le composant contient une méthode de test "Exif_Test" qui permet de tester facilement le composant.
Elle fournit un moyen de vérifier rapidement le contenu d'un fichier ainsi que le nom des balises
utilisées et/ou disponibles, ce qui aide à la programmation. Les noms de balises ne sont pas entièrement
normalisées ; par exemple, Picasa et Photoshop utilisent des "Keywords" (mots-clés) alors que
Windows XP utilise des "XP Keywords" pour stocker les mots-clés utilisateur. Parcourir ce genre de
fichiers permet de se donner une idée sur les balises communément utilisées.
6/9
Ce dialogue ne devrait pas être utilisé dans l'application finale distribuée à vos clients.
Notes sur l'installation du composant
Lors de l'exécution du composant 4D Exif sur Mac OS X, il se peut que vous tombiez dans un
piège. Si vous désarchivez, sur Windows, le fichier zip qui contient la base de données et que
vous le copiez sur Mac, il est possible que certains fichiers à l'intérieur du package (sur Mac)
aient perdu leurs propriétés. La meilleure solution est d'extraire à nouveau l'application sur Mac
cette fois.
Le fichier important est dans le dossier "Components" de la base de données de démonstration :
Components:Exif_Component.4dbase:Resources:exif_Mac:exiftool
Ce fichier doit avoir la propriété "Unix executable" (fichier exécutable Unix). S'il est affiché en
tant que "fichier texte", il ne pourra pas être exécuté avec LANCER PROCESS EXTERNE et
donc le composant ne se lancera pas. Si vous supprimez accidentellement ces droits, vous pouvez
les réassigner via la fenêtre du Terminal et la commande chmod. Nous vous conseillons de
désarchiver simplement notre base exemple sur Mac ou de télécharger l'ensemble des fichiers
Mac OS à partir de :
http://owl.phy.queensu.ca/~phil/exiftool/index.html
4D v12 et les EXIF
4D v12 supporte les principaux standards de traitement d'images : GPS, IPTC, TIFF... et EXIF.
Une base exemple v12, "PictMetadata", est fournie dans la section "Méta-données des images" de la rubrique
"Comment faire ?" du site 4D :
http://www.4d.com/fr/support/resources/howdoi.html
7/9
Deux nouvelles commandes :
LIRE METADONNEES IMAGE
http://doc.4d.com/4D-Langage-12/Images/LIRE-METADONNEES-IMAGE.301-169358.fr.html
La commande LIRE METADONNEES IMAGE permet de lire le contenu de métadonnées (ou métabalises) présentes dans une image (un champ ou une variable image 4D). Pour plus d’informations sur les
métadonnées, reportez-vous à la description de la commande FIXER METADONNEES IMAGE.
LIRE METADONNEES IMAGE (image;nomMeta;contenuMeta{;nomMeta ;contenuMeta2 ; ... ;
nomMetaN ;contenuMetaN})
Paramètre
image
nomMeta
contenuMeta
Type
Image
Texte
Variable
Description
Image dont vous souhaitez lire les métadonnées
Nom ou chemin du bloc à lire
Contenu de la métadonnée
FIXER METADONNEES IMAGE
http://doc.4d.com/4D-Langage-12/Images/FIXER-METADONNEES-IMAGE.301-169312.fr.html
La commande FIXER METADONNEES IMAGE permet d’écrire ou de modifier le contenu de
métadonnées (ou méta-balises) présentes dans image (champ ou une variable image 4D).
FIXER METADONNEES IMAGE (image;nomMeta;contenuMeta{;nomMeta2;contenuMeta2;
nomMetaN;contenuMetaN})
Paramètre
image
nomMeta
contenuMeta
Type
Image
Texte
Variable
...
Description
Image dont vous souhaitez écrire les métadonnées
Nom ou chemin du bloc à écrire
Contenu de la métadonnée
Les constantes :
Noms des métadonnées images
http://doc.4d.com/4D-Langage-12/Liste-des-themes-de-constantes/Noms-des-metadonnees-images.302169412.fr.html
Valeurs des métadonnées images
http://doc.4d.com/4D-Langage-12/Liste-des-themes-de-constantes/Valeurs-des-metadonnees-images.302170368.fr.html
Module PHP :
Exif fait partie des modules pris en charge par défaut dans 4D v12 :
8/9
;
Prise en charge des modules PHP :
http://doc.4d.com/4D-Langage-12/PHP/Prise-en-charge-des-modules-PHP.300-306984.fr.html
Exif
http://fr2.php.net/exif
Travail avec les méta-données des images.
Conclusion
Cette note technique et sa base exemple ont présenté un composant 4D v11 qui permet à une base de
données 4D de lire et d'écrire des métadonnées EXIF d'un fichier image, audio ou vidéo, en utilisant des
appels à un programme externe, ExifTool, écrit par Phil Harvey. Ceci permet à la base de données de tirer
avantage d'une foule d'informations, en particulier des données enregistrées par un appareil de prise de vue
digital.
9/9