Avec les appareils photo récents ou les téléphones portables, lorsqu’une photo est prise, plusieurs informations sont enregistrées en plus de l’image elle-même : on parle de métadonnées.
Le plus souvent, le format d’enregistrement de ces informations est l’EXIF (Exchangeable Image File Format). Ce format couvre un large éventail d’informations comme la date et l’heure, les réglages de l’appareil, la géolocalisation lorsqu’elle existe…
Dans cette activité, nous allons voir une méthode pour récupérer les informations Exif d’une photo à l’aide de la librairie python Pillow .
La bibliothèque Pillow (nouvelle version de l’ancienne bibliothèque PIL) propose de nombreux outils de traitement d’images.
Lien vers le site officiel : pillow.readthedocs.io/en/stable/
Nous allons nous intéresser à :
Comme pour toute librairie, pour pouvoir l’utiliser, il faut qu’elle soit installée dans l’environnement d’exécution de python utilisé.
Pour que les constantes, les fonctions et les méthodes de la libraire soient disponibles, il faut insérer le code suivant.
from PIL import Image
Avec la librairie Pillow, l’ouverture et l’affichage d’une image sont simples.
im = Image.open("nomImage.jpg") # ouverture de l'image
im.show() # affichage de l'image dans le logiciel par défaut d'affichage des images
Les informations Exif d’une photo peuvent être récupérées sous la forme d’un dictionnaire à l’aide de la méthode _getexif() appliquée à l’image récupérée.
dico_exif = im._getexif()
Les clés sont des nombres (voir ci-dessous) et les valeurs, les informations correspondantes.
Faite un print du dictionnaire pour voir son contenu “brut”.
print(dico_exif)
La bibliothèque Pillow propose un dictionnaire qui permet de faire la correspondance entre les clés des données Exif et leurs significations. Ce dictionnaire est stocké dans la variable TAGS.
Expliquer, sans les tester, ce que font les deux lignes suivantes :
from PIL.ExifTags import TAGS
for c, v in TAGS.items():
print(str(c) + ' : ' + str(v))
Les données GPS sont stockées dans le dictionnaire récupéré par la méthode _getexif() avec la clé 34853 sous la forme d’un dictionnaire.
La bibliothèque Pillow propose un dictionnaire qui permet de faire la correspondance entre les clés des données GPS et leurs significations. Ce dictionnaire est stocké dans la variable GPSTAGS qu’il faudra importer avec la ligne de code suivante.
from PIL.ExifTags import GPSTAGS
Les coordonnées de géolocalisation correspondent à la latitude et la longitude. Elles sont exprimées soit dans le système sexagésimal (c’est à dire en base 60, autrement dit en degrés, minutes, secondes) soit dans le système décimal.
Exemple des coordonnées de la Tour Eiffel :
48°51'30.0"N 2°17'40.1"E48.858336N, 2.294471E• Dans les données Exif :
Dans les deux cas, les trois tuples correspondent aux degrés, aux minutes et aux secondes avec la précision. Ainsi, le tuples ((48, 1), (51, 1), (3000, 100)) correspond à 48° 51' et 3000/100 = 30,00".
Dans votre espace, créer un répertoire pour l’activité en cours.
A l’aide de votre téléphone portable :
activer la géolocalisation,
paramétrer le téléphone pour que les informations de géolocalisation soient ajoutées aux photos,
prendre une photo de votre ordinateur,
transférer la photo dans le répertoire de travail sur l’ordinateur.
Écrire les lignes de code qui permettent d’afficher :
le constructeur et le modèle de l’appareil photo (Make et Model)
la taille de l’image (ImageWidth et ImageHeight),
la date et l’heure de la prise de la photo (DateTime).
Écrire les lignes de code qui permettent d’afficher les coordonnées GPS d’une photo dans le système décimal.
Copier/coller ces coordonnées dans un site de cartographie en ligne comme www.openstreetmap.org .
Écrire les lignes de code qui permettent d’afficher l’ensemble des données Exif d’une photo de façon lisible.
Exemple :
Make : ...
GPSInfo : ...
... : ...
Voici une photo de mes dernières vacances, trouver le maximum d’informations sur cette photo pour savoir où j’étais !