- Comprendre l'importance des données EXIF sur une image ;
- Visualiser les données EXIF ;
- Se repérer sur une carte grâce aux données EXIF.
Les métadonnées EXIF
Introduction aux métadonnées
Les photographies prises par nos APN regroupent un ensemble d'informations qui ne sont pas visibles par l'utilisateur, à moins que celui-ci ne veuille les chercher.
Appelées métadonnées EXIF (pour EXchangeable Image file Format), ces informations concernent en grande majorité les méthodes et paramètres utilisés lors de la prise de la photo.
On pourra y retrouver entre autres :
- Le constructeur de l'appareil;
- Le modèle de l'appareil;
- La résolution de la photo;
- Des informations temporelles et géographiques;
- L'exposition;
- L'ouverture focale;
- La balance des couleurs;
- La compression des couleurs;
- Des droits d'auteur;
- ...
Tant d'informations qui peuvent se révéler utiles lorsque l'on souhaite effectuer des retouches photographiques.
Malgré qu'elles ne soient supposées être accessibles qu'en lecture seule, les informations peuvent être modifiées avec des logiciels spécifiques. Il faut donc être prudent avec la lecture de données EXIF des images sur Internet.
Activité - Lecture de métadonnées EXIF
La lecture des données EXIF se fera à l'aide d'un programme python
.
Sur EduPython, faire :
- Créer un nouveau fichier en cliquant sur l'icône
📄
, ou en appuyant surCTRL
+N
- Enregistrer le fichier sous le nom
Activite_1_EXIF
en cliquant sur l'icône💾
, ou en appuyant surCTRL
+S
Pour visualiser l'ensemble des données EXIF d'une image, il va falloir utiliser la bibliothèque PIL avec 2 de ses fonctionnalités : Image
(vu dans le TP1 et TP2), et TAGS
pour visualiser les tags, c'est-à-dire le nom des informations.
On utilisera les 2 lignes suivantes :
from PIL import Image
from PIL.ExifTags import TAGS
Exercice 1 - Programme de lecture
- Enregister l'image suivante : photo.jpg en lui donnant le nom
photo
.
On enregistre avecclic droit
→Enregistrer le lien sous
. - Dans python, ouvrir la photo, et l'enregistrer dans la variable
img
. Regarder ici pour retrouver la fonction. - La bibliothèque PIL permet d'extraire les données EXIF.
Écrire les lignes suivantes :
donnees = img._getexif()
print(donnees) - Qu'affiche la console ?
donnees est un dictionnaire
dont la clé
est une clé EXIF (qui correspond à une donnée spécifique), et la valeur
associée à la valeur pour la clé donnée de la photo.
- Pour savoir ce que représentent les clés, nous allons utiliser la fonctionnalite
TAGS
. Recopier le code suivant :for cle, valeur in TAGS.items() :
print("clé :",cle,", information :", valeur) - Qu'affiche la console ?
On peut accéder à des valeurs spécifiques de nos métadonnées en faisant : donnees[cle]
, en remplaçant "cle" par une clé spécifique.
- Chercher les clés dont la valeur est
Make
(Fabriquant) etModel
(Modèle), et afficher le fabriquant et le modèle de l'appareil qui a pris la photo.
Les photos ne contiennent pas obligatoirement toutes les métadonnées remplies. On cherche maintenant à afficher l'ensemble des clés et des valeurs des métadonnées d'une image.
- En vous aidant du code donné plus haut, recopier et compléter le code suivant :
for ..., ... in donnees.items():
print("numéro :", ... , ", information :", TAGS.get(...),", valeur :", ...)
TAGS.get permet d'afficher l'information associée à une clé.
Exercice 2 - Informations géographiques
Certaines images contiennent des métadonnées géographiques, c'est-à-dire que l'on est capable d'identifier l'endroit où la photo a été prise.
- En se servant de la question 5 de l'exercice 1, trouver le code contenant des informations
GPS
. - En vous aidant de la question 7 de l'exercice 1, afficher les données géographiques de l'image.
- Clé 1 : lettre représentant l'hémisphère (Nord, Sud)
- Clé 2 : représente les coordonnées de la latitude
- Clé 3 : lettre représentant le côté par rapport au méridien Greenwich (West, East)
- Clé 4 : représente les coordonnées de la longitude
La longitude et latitude sont toujours représentées par : un degré, des minutes et des secondes.
Dans les données EXIF, elles sont sous la forme : ( (degré,1), (minute,1), (seconde, une puissance de 10) ).
Exemple : ( (47,1), (32,1), (2514353,100000) ) qui nous donnerait : 47°32'25,14353''.
On se place ici dans le DMS
(Degré-Minute-Seconde) pour représenter un angle en base 60 (système sexagésimal
).
Pour représenter un point sur une carte, il faut passer du DMS au Degré Décimal (DD) pour la latitude et la longitude.
La conversion se présente de cette façon :
- On garde la valeur du degré
- On divise les minutes par 60
- On divise les secondes par 3600
- On additionne le tout
Si on est dans l'hémisphère Sud, ou si on est à gauche du méridien Greenwich, on met un "-" devant la valeur obtenue.
- À partir de ces informations, traduire en DD la latitude et longitude de l'image.
- En allant sur OpenStreetMap (utilitaire de carte), renseigner dans la barre de recherche, sous la forme
longitude, latitude
, les informations trouvées. Vérifier avec le nom de la ville et la photo si on est au bon endroit !
John McAfee, créateur de l'antivirus éponyme, a été impliqué dans une affaire de meurtre aux États-Unis, et a fui le pays. Il a par conséquent été recherché.
Au Guatemala, un journaliste de Vice l'a photographié et a publié la photo sur le web. La photo contenait des métadonnées dont des données GPS, indiquant ainsi sa position, et permettant son arrestation.
Source : le Monde