SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 241 visiteurs en ce moment

Accueil > Administration et BDD > Gestion des documents > Données Exif > Afficher les données EXIF des images

Afficher les données EXIF des images

Plugin EXIF pour Spip 1.9.2 et squelette d’affichage

12 mai 2008 – par GezuS – commentaires

11 votes

Plugin pour disposer le la balise EXIF pour SPIP 1.9.2 et squelette EXIF pour afficher les données de l’appareil photo.

Rq : Pour SPIP 1.9, 2 et 3 il y a le plugin Metadonnées Photo qui présente les métadonnées EXIF, ,GPS et IPTC d’une photo.

Préambule

Cette contribution à pour but de rassembler les connaissances autour de la gestion des données EXIF des images.
Vous trouverez donc :

-  Le plugin EXIF en version compatible Spip 1.9.2, fournissant la balise EXIF.
-  Un squelette d’affichage des données EXIF contenues dans la balise.
-  Un exemple de rendu d’affichage de ce squelette.
-  Une explication technique sur les les format et les données EXIF.
-  La doc technique de la balise EXIF : Liste des champs accessibles par la balise.
-  Des liens pour aller plus loin sur l’EXIF, pour les dévelloppeurs ...

Le plugin EXIF

Ce plugin permet de disposer d’une nouvelle balise #EXIF
qui permet d’accéder aux données Exif des images et photos du site.
Il reprend une contrib Spip de Mortimer (merci à lui) sous forme de plugin afin d’offrir la possibilité d’utiliser la balise #EXIF dans les squelettes.

Attention :
-  Le plugin proposé ici est seulement une adaptation du plugin existant de Pierre Andrews, merci à lui.
-  Le plugin n’a pas été vérifié sur toute les versions de Spip,
mais il fonctionne sur version Spip 1.9.2.

Le plugin intègre une fonction "update_date_exif" qui permet de mettre à jour les dates Exif de toutes les photos du site d’un seul coup.
Cette fonction doit être appelée par votre navigateur dans le répertoire "ecrire/" de votre site Spip.

L’appel à cette fonction était soumis à un controle de l’authentification qui l’empêchait de fonctionner sous Spip 1.9.2, j’ai donc fait sauter ce controle.
Ceci signifie qu’il y a potentiellement une faille de sécurité dans la fonction modifiée "exif/actions/update_date_exif.php".
(Supprimez le fichier en question si vous ne souhaitez pas prendre de risque)

-  Télécharger le plugin EXIF modifié :

Zip - 14.8 ko
Plugin balise EXIF pour 1.9.2

Un squelette pour le plugin EXIF

Ce petit squelette, permet le bon formattage des données fournies par la balise EXIF, ainsi que l’affichage avec mise en forme de ces données Exif.

-  Télécharger le fichier du Squelette EXIF modifié pour Spip 1.9.2 :

HTML - 2.5 ko
Squelette EXIF pour 1.9.2

Ce code est à ajouter dans son squelette (article.html par exemple), afin d’afficher correctement une majorité de données venant de la balise EXIF.

Pour fonctionner, il devra être placé dans une boucle ARTICLES ou une boucle DOCUMENTS afin d’afficher les données Exif des images contenues dans une de ces 2 boucles :
-  Dans une boucle DOCUMENTS, les données Exif affichées seront celles des images affichés par votre boucle,
-  Dans une boucle ARTICLES, les données Exif affichées seront celles des images associées à l’article sélectionné par votre boucle.

Voici le code :

<B_exif>
Données EXIF

<BOUCLE_exif(DOCUMENTS){id_document}{mode=document}{extension=jpg}{doublons}>
<div align="center">

<div class="contenuSpip">[ Détails du cliché ]</div>
[<li>Date: (#EXIF{EXIF,DateTimeOriginal})</li>]
[<li>Taille originale: #EXIF{EXIF,ExifImageWidth}&nbsp;x&nbsp;(#EXIF{EXIF,ExifImageLength}) pixels</li>]
<BR>
<div class="contenuSpip">[ Paramètres de l'appareil ]</div>
[<li>Modèle: (#EXIF{IFD0,Model})</li>]
[<li>ISO: (#EXIF{EXIF,ISOSpeedRatings})</li>]
[<li>Programme: (#EXIF{EXIF,ExposureProgram}|replace{1,Réglage Manuel}|replace{3,Priorité Ouverture})</li>]
<BR>
<div class="contenuSpip">[ Focale ]</div>
[<li>Longueur: (#EXIF{EXIF,FocalLength}|div{1})mm</li>]
[<li>Ouverture: f(#EXIF{EXIF,FNumber}|div{10})</li>]
<!-- [<li>Ouverture Max: f(#EXIF{EXIF,MaxApertureValue}|div{10})</li>] -->
<BR>
<div class="contenuSpip">[ Exposition ]</div>
[<li>Temps: (#EXIF{EXIF,ExposureTime})ème de sec</li>]
[<li>Mesure: (#EXIF{EXIF,ExposureMode}|replace{0,Exposition Automatique}|replace{1,Exposition Manuelle})</li>]
[<li>Mode de mesure: (#EXIF{EXIF,MeteringMode}|replace{5,Manuel}|replace{6,Central Pondéré}|replace{1,Moyenne})]</li>
[<li>Correction: (#EXIF{EXIF,ExposureBiasValue}|div{1}) iL</li>]
<BR>
<div class="contenuSpip">[ Lumière ]</div>
[<li>Balance des blancs: (#EXIF{EXIF,WhiteBalance}|replace{0,Automatique}|replace{1,Manuelle})</li>]
[<li>Source: (#EXIF{EXIF,LightSource})</li>]
[<li>Flash: (#EXIF{EXIF,Flash}|replace{16,Sans})</li>]
<BR>
<div class="contenuSpip">[ Post-traitement ]</div>
[<li>Contraste: (#EXIF{EXIF,Contrast})</li>]
[<li>Saturation: (#EXIF{EXIF,Saturation})</li>]
[<li>Netteté: (#EXIF{EXIF,Sharpness})</li>]
[<li>Compression: (#EXIF{EXIF,CompressedBitsPerPixel}|div{1}) bits/pixel</li>]
<div class="contenuSpip">[<BR>Version Exif: (#EXIF{EXIF,ExifVersion})]</div>

</div>
</BOUCLE_exif>

<BR>
</B_exif>

Résultat d’affichage des données Exif

JPEG - 7.2 ko

Pour l’image ci-dessus, on doit obtenir ceci :

[ Détails du cliché ]

Date : 2008:04:12 21:08:03
Taille originale : 3456 x 2304 pixels

[ Paramètres de l’appareil ]

Modèle : Canon EOS 350D
ISO : 400
Programme : Réglage Manuel

[ Focale ]

Longueur : 100mm
Ouverture : f6.3

[ Exposition ]

Temps : 5/10e de sec
Mesure : Exposition Manuelle
Mode de mesure : Manuel
Correction : 0 iL

[ Lumière ]

Balance des blancs : Manuelle
Flash : Sans

[ Post-traitement ]

Compression : 0 bits/pixel

Version Exif : 0221

-  Voir un exemple en ligne (cliquer sur « Données EXIF » en dessous de la photo)

Explication technique : Le format EXIF

Principe :

EXIF est une abréviation de Exchange Image File. Ce format définit les informations d’ordre technique contenues dans les fichiers images. Comme les champs IPTC, ce sont des métadonnées de type interne. Ces informations concernent la prise de vue et les réglages de l’appareil au moment de la capture numérique.

Le format EXIF a été développé en octobre 1995 par le JEIDA (Japan Electronic Industry Development Association). La version 2.0 date de novembre 1997 et la révision 2.2 d’avril 2002.

Technique :

Fondamentalement, le format de fichier EXIF est le même que le format de fichier JPEG ou que le format de fichier TIFF suivant le mode de traitement de l’image qui a été choisi. Le format EXIF insère des informations sur l’image/appareil et une image miniature dans le fichier JPEG ou TIFF en gardant la conformité à la spécification JPEG ou TIFF. Cependant, nous pouvons noter que la plupart des logiciels de retouche d’image ne conservent pas les données EXIF lors de l’enregistrement d’une image.

La plupart des métadonnées EXIF ont trait aux caractéristiques techniques des images telles qu’elles peuvent être fournies par l’appareil au moment de la prise de vue : fabricant et modèle de l’appareil, hauteur et largeur de l’image, date et heure de la prise de vue, résolution, temps d’exposition, ouverture, présence d’un flash, etc.

Cependant, plusieurs champs EXIF concernent la description de l’image et sont manifestement concurrents de certains champs IPTC essentiels :
-  Titre de l’image (EXIF ImageDescription ? = IPTC HeadLine ?)
-  Personne ayant créé l’image (EXIF Artist = IPTC By-Line)
-  Titulaire du Copyright (EXIF Copyright = IPTC Copyright Notice)

Les marqueurs :

Un fichier JPEG ou TIFF contient des données hexadécimales de la forme 0xFFXX qui sont appelées « Marqueurs ». Elles délimitent des zones particulières de données d’information.

La structure de données Exif :

Grossièrement la structure des données Exif (APP1) est montrée ci-dessous. Elle applique l’alignement "Intel" des octets et contient une image miniature au format JPEG. Comme décrit précédemment, les données Exif commencent par les caractères ASCII "Exif" et 2 octets 0x00, puis suivent les données Exif. L’Exif utilise le format TIFF pour enregistrer les données.

FFE1 Marqueur APP1
SSSS Données APP1 Taille des données APP1
45786966 0000 En-tête Exif
49492A00 08000000 En-tête TIFF
XXXX. . . . IFD0 (image principale) Répertoire
LLLLLLLL Lien vers IFD1
XXXX. . . . Zone de données de IFD0
XXXX. . . .   Exif SubIFDRépertoire
00000000 Fin du lien
XXXX. . . . Zone de données Exif SubIFD
XXXX. . . .   Interopérabilité IFD Répertoire
00000000Fin du lien
XXXX. . . . Zone de données de l’Interopérabilité IFD
XXXX. . . . Makernote IFDRépertoire
00000000 Fin du lien
XXXX. . . . Zone de données Makernote IFD
XXXX. . . . IFD1(image miniature) Répertoire
00000000 Fin du lien
XXXX. . . . Zone de données de IFD1
FFD8XXXX. . . XXXXFFD9 Image miniature

Après l’en-tête TIFF, se trouve le premier IFD (Image File Directory). Il contient les données d’information de l’image.

Dans un fichier au format Exif, le premier IFD est IFD0 (IFD de l’image principale), puis il pointe vers IFD1 (IFD de l’image miniature) et les liens IFD sont terminés. Mais IFD0/IFD1 ne contiennent aucune information de l’appareil photo numérique telle que la vitesse d’obturation, la distance focale, etc. IFD0 contient toujours un marqueur spécial Exif Offset (0x8769), il donne un offset vers Exif SubIFD ?. Exif SubIFD ? est une zone de données formatées comme un IFD. Cette zone contient les informations relatives à l’appareil photo numérique. Dans le cas du format étendu Exif (Exif2 ?.1/DCF), Exif SubIFD ? contient un marqueur spécial Offset de l’interopérabilité Exif (0xa005). Il pointe vers un IFD Interopérabilité. Suivant la spécification DCF, ce marqueur est obligatoire et autant IFD0 (IFD de l’image principale) que IFD1 (IFD de l’image miniature) doivent avoir un IFD d’interopérabilité.

Le format Exif contient généralement une miniature de l’image. Habituellement elle est enregistrée à la suite de l’IFD1. Il y a 3 formats possibles pour les miniatures : le format JPEG (JPEG utilise YCbCr), le format RGB TIFF et le format YCbCr TIFF. Il semblerait que le format JPEG avec une dimension de 160x120 pixels soit le format recommandé pour l’image miniature dans la norme Exif 2.1 ou suivante.

Critique :

EXIF est à réserver uniquement pour les métadonnées techniques relatives à la prise de vue et fournies automatiquement par un appareil numérique. Modifier ces métadonnées constitue donc un non-sens en rajoutant par exemple des informations sur l’auteur de l’image. De nombreux logiciels de photos permettent de lire les informations EXIF et d’en modifier certaines.

De plus, les métadonnées EXIF sont applicables uniquement aux images au format JPEG ou TIFF. Les images miniatures contenues dans le format EXIF permettent de faciliter la consultation en ligne de celles-ci sur Internet, puisqu’elles sont moins lourdes à manipuler. Cependant, de nombreux logiciels de retouche d’images enlèvent facilement les métadonnées EXIF.

Merci à L. Angama, étudiante à Montpellier.

Pour aller plus loin

-  Le plugin EXIF original par Pierre Andrews sur la Zone

-  La contrib d’origine EXIF par Mortimer

-  Description of EXIF File Format (en anglais)

-  Les données supplémentaires de la balise #EXIF affichables (voir le tableau)

Quelques Tags Exif utilisables
Tag No. Tag NameFormat CompoNo Desc.
0x829a ExposureTime unsigned rational 1 Exposure time (reciprocal of shutter speed). Unit is second.
0x829d FNumber unsigned rational 1 The actual F-number(F-stop) of lens when the image was taken.
0x8822 ExposureProgram unsigned short 1 Exposure program that the camera used when image was taken. ’1’ means manual control, ’2’ program normal, ’3’ aperture priority, ’4’ shutter priority, ’5’ program creative (slow program), ’6’ program action(high-speed program), ’7’ portrait mode, ’8’ landscape mode.
0x8827 ISOSpeedRatings unsigned short 2 CCD sensitivity equivalent to Ag-Hr film speedrate.
0x9000 ExifVersion undefined 4 Exif version number. Stored as 4bytes of ASCII character (like "0210")
0x9003 DateTimeOriginal ascii string 20 Date/Time of original image taken. This value should not be modified by user program.
0x9004 DateTimeDigitized ascii string 20 Date/Time of image digitized. Usually, it contains the same value of DateTimeOriginal(0x9003).
0x9101 ComponentConfiguration undefined
Unknown. It seems value 0x00,0x01,0x02,0x03 always.
0x9102 CompressedBitsPerPixel unsigned rational1 The average compression ratio of JPEG.
0x9201 ShutterSpeedValue signed rational1 Shutter speed. To convert this value to ordinary ’Shutter Speed’ ; calculate this value’s power of 2, then reciprocal. For example, if value is ’4’, shutter speed is 1/(2^4)=1/16 second.
0x9202 ApertureValue unsigned rational1 The actual aperture value of lens when the image was taken. To convert this value to ordinary F-number(F-stop), calculate this value’s power of root 2 (=1.4142). For example, if value is ’5’, F-number is 1.4142^5 = F5.6.
0x9203 BrightnessValue signed rational1 Brightness of taken subject, unit is EV.
0x9204 ExposureBiasValue signed rational1 Exposure bias value of taking picture. Unit is EV.
0x9205 MaxApertureValue unsigned rational1 Maximum aperture value of lens. You can convert to F-number by calculating power of root 2 (same process of ApertureValue(0x9202).
0x9206 SubjectDistance signed rational1 Distance to focus point, unit is meter.
0x9207 MeteringMode unsigned short1 Exposure metering method. ’1’ means average, ’2’ center weighted average, ’3’ spot, ’4’ multi-spot, ’5’ multi-segment.
0x9208 LightSource unsigned short1 Light source, actually this means white balance setting. ’0’ means auto, ’1’ daylight, ’2’ fluorescent, ’3’ tungsten, ’10’ flash.
0x9209 Flash unsigned short1 ’1’ means flash was used, ’0’ means not used.
0x920a FocalLength unsigned rational1 Focal length of lens used to take image. Unit is millimeter.
0x927c MakerNote undefined
Maker dependent internal data. Some of maker such as Olympus/Nikon/Sanyo etc. uses IFD format for this area.
0x9286 UserComment undefined
Stores user comment.
0xa000 FlashPixVersion undefined 4 Stores FlashPix version. Unknown but 4bytes of ASCII characters "0100"exists.
0xa001 ColorSpace unsigned short 1 Unknown, value is ’1’.
0xa002 ExifImageWidth unsigned short/long 1 Size of main image.
0xa003 ExifImageHeight unsigned short/long 1
0xa004 RelatedSoundFile ascii string
If this digicam can record audio data with image, shows name of audio data.
0xa005 ExifInteroperabilityOffset unsigned long 1 Extension of "ExifR98", detail is unknown. This value is offset to IFD format data. Currently there are 2 directory entries, first one is Tag0x0001, value is "R98", next is Tag0x0002, value is "0100".
0xa20e FocalPlaneXResolution unsigned rational 1 CCD’s pixel density.
0xa20f FocalPlaneYResolution unsigned rational 1
0xa210FocalPlaneResolutionUnit unsigned short 1 Unit of FocalPlaneXResoluton/FocalPlaneYResolution. ’1’ means no-unit, ’2’ inch, ’3’ centimeter.
0xa217SensingMethod unsigned short 1 Shows type of image sensor unit. ’2’ means 1 chip color area sensor, most of all digicam use this type.
0xa300FileSource undefined 1 Unknown but value is ’3’.
0xa301SceneType undefined 1 Unknown but value is ’1’.

Voir en ligne : Article d’origine sur le plugin et squelette Exif pour Spip 1.9.2

P.-S.

Reste à faire :

-  Créer un squelette plus complet pour affichage de toutes les données disponibles dans la balise EXIF.

-  Inscrire les codes d’échappement de tous les champs de la balise EXIF, afin d’avoir des termes parlant plutot que des chiffres (ex : « Balance des blancs : 1 » devient « Balance des blancs : Manuelle »).

-  Ajouter l’affichage des données complètes contenues dans la section « IFD0 » de la balise EXIF (section contenant les informations sur la marque, le modèle, le constructeur de l’appareil...) et aussi les données de la section « IFD0 ».

-  Trouver/créer des icones pour un rendu visuel des données Exif.

Dernière modification de cette page le 29 mars 2016

Retour en haut de la page

Vos commentaires

  • Le 15 novembre 2008 à 12:34, par gattcat En réponse à : Afficher les données EXIF des images

    Quel code de boucle pourrait-on utiliser pour classer des photos en fonction de la date EXIF de prise de vue ?

    Merci pour vos réponses.

    Répondre à ce message

  • Le 13 mai 2008 à 23:24, par Domy En réponse à : Afficher les données EXIF des images

    Bonjour,

    En temps que photographe, je serais intéressé par la possibilité d’afficher les champs IPTC plutôt que les champs EXIF. Ce plugin peut il être adapté pour cela ?
    Merci

    • Le 14 mai 2008 à 18:06, par GezuS En réponse à : Afficher les données EXIF des images

      Je pense que cela doit être possible car la balise #EXIF permet déjà d’accéder à des données indexées sous le nom de EXIF :
      -  (#EXIF{EXIF,ISOSpeedRatings}) pour afficher les ISO par exemple,

      mais aussi de IFD0 de cette manière :
      -  (#EXIF{IFD0,Model}) pour le modèle de l’appareil photo utilisé.

      On voit bien que la balise #EXIF porte sur un champ nommé EXIF dans l’exemple 1,
      mais elle porter sur d’autres champs de données comme IFD0 dans l’exemple 2.

      Il faudrait essayer avec le champ IPTC, je ne sais plus ou j’ai vu sur le net que cela fonctionnait en principe avec ce plugin.
      Cela devrait donner ce genre de syntaxe dans le code à intégrer :
      -  (#EXIF{IPTC,Nom_de_la_donnée_IPTC_demandée})

      Je testerai cela si j’ai le temps, et je veux bien un retour si quelqu’un essaye avant moi.

    • Le 17 mai 2008 à 12:19, par Viglino Jean-Marc En réponse à : Afficher les données EXIF des images

      Bonjour,
      Il suffit de mettre [(#EXIF)] sans argument pour voir s’afficher tout ce que contient la balise... et donc s’il gère les IPTC...

       ;-)

    • Le 18 mai 2008 à 14:52, par GezuS En réponse à : Afficher les données EXIF des images

      Oui, merci pour cette réponse pertinente, c’est vrai que cette syntaxe permet l’affichage complet des données de la balise.

      Par contre cela ne permet pas de trouver la syntaxe exacte à utiliser si on souhaite extraire seulement un attribut en particulier.

      D’ailleurs il faudrait ajouter à la liste des tags de la section EXIF de cet article, les tags des autres sections : IFD0 et IPTC.
      De cette manière on aurait la doc complète de cette fameuse balise #EXIF, et on pourrait créer un vrai squelette d’affichage complet.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Métas +

    3 décembre – 14 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

  • Adaptive Images

    15 novembre 2013 – 69 commentaires

    Un plugin pour permettre aux sites responsive d’adapter automatiquement les images de la page à l’écran de consultation. Adaptive Images, que l’on pourrait traduire par Images adaptatives, désigne la pratique qui vise à adapter les taille, (...)

  • Social tags

    8 septembre 2008 – 428 commentaires

    Le plugin Social Tags permet d’ajouter des icônes de partage de liens vers les sites tels que Digg, Facebook, Delicious.... Une fois le plugin installé et activé (voir doc.), le choix des sites se fait via un menu de configuration. Insertion (...)

  • Module de Paiement Stripe

    17 octobre – commentaires

    Stripe est un prestataire de paiement externe https://stripe.com/fr qui propose une API moderne et une interface de paiement extrêmement conviviale et efficace. Ce module permet les paiements à l’acte et les paiement récurrents. Configuration (...)

  • Métas

    8 août 2009 – 50 commentaires

    Ce petit plugin permet l’ajout, depuis l’espace privé, de metatags aux articles et rubriques de SPIP, ainsi que la mise en exergue de mots importants.

Ça spipe par là