Partie P6 · exercices 35 à 38

Ce que cache une photo

Les métadonnées : appareil, date, lieu…

Un fichier photo ne contient pas seulement des pixels. Il contient aussi des métadonnées : des informations sur la photo, enregistrées automatiquement par l'appareil. Ce sont les données EXIF.

CoursLes métadonnées d'une photo

InformationExemple
l'appareilmarque et modèle (Nikon D3200)
la date et l'heurede la prise de vue, de la dernière modification
les réglagestemps de pose, ouverture, sensibilité ISO, flash
le logicielun éditeur d'images, s'il a modifié la photo
le lieules coordonnées GPS, si la géolocalisation est activée

Sous Windows : clic droit sur le fichier → Propriétés → onglet Détails. Avec Python, Pillow les lit :

exif.py
from PIL import Image
from PIL.ExifTags import TAGS

photo = Image.open("photo_mystere.jpg")
exif = photo.getexif()
for cle, valeur in exif.items():
    print(TAGS.get(cle, cle), ":", valeur)

Un dictionnaire

Les métadonnées sont rangées dans un dictionnaire : une collection de couples clé → valeur. Par exemple {1: "N", 2: (43.0, 56.0, 51.0)} associe la clé 1 à la valeur "N". On lit une valeur avec dico[clé].

for cle, valeur in exif.items(): parcourt tous les couples.

Les coordonnées GPS sont rangées à part. On les obtient ainsi :

gps.py
gps = exif.get_ifd(0x8825)
print(gps)
CléContenuExemple
1hémisphère de la latitude : "N" ou "S""N"
2latitude en DMS : degrés, minutes, secondes(43.0, 56.0, 51.0)
3hémisphère de la longitude : "E" ou "W""E"
4longitude en DMS(4.0, 32.0, 6.0)

Vigilance

Dans les métadonnées, l'ouest s'écrit "W" (West, en anglais), pas "O".

Beaucoup de sites de partage effacent les métadonnées des photos publiées, mais pas tous : un envoi par messagerie ou par courriel peut les conserver. Une capture d'écran ne les conserve pas.

Les métadonnées peuvent être modifiées ou effacées : leur absence ne prouve rien.

ExercicesEnquêter sur des photos

EX 35Je m'entraîne 🌶️prise en main

Exercice 35 — Ce que dit le fichier

Ouvre les propriétés (onglet Détails) de Eiffel.jpeg et de Gargouille1.jpeg.

  1. Quel appareil a pris ces photos ?
  2. Repère la date de prise de vue et la date de dernière modification. Sont-elles identiques ?
  3. Un logiciel d'édition est-il mentionné ? Qu'est-ce que cela indique ?
Indice

Cherche « Date de prise de vue » et « Date de modification », ainsi que « Programme » ou « Logiciel ».

📝 réponses dans ton compte rendu, exercice 35

EX 36Je m'entraîne 🌶️🌶️application

Exercice 36 — Lire les métadonnées avec Python

La photo photo_mystere.jpg est une image fabriquée pour l'exercice : ses métadonnées sont fictives. Recopie exif.py et exécute-le.

  1. Quel est l'appareil (marque et modèle) ? Quelle est la date ?
  2. Le programme affiche GPSInfo : 104. Ce nombre est-il une coordonnée ? Que représente-t-il d'après toi ?
Indice

Chaque ligne est de la forme nom : valeur.

💾 NOM_Prenom_ex36.py

EX 37Je m'entraîne 🌶️🌶️🌶️plusieurs étapes

Exercice 37 — Où a été prise la photo ?

Avec gps.py, lis les coordonnées GPS de photo_mystere.jpg.

  1. Écris un programme qui convertit la latitude et la longitude en degrés décimaux, avec le bon signe (ouest et sud sont négatifs), puis les affiche.
  2. Ajoute une carte Folium centrée sur ce point, avec un marqueur.
  3. Où la photo a-t-elle été prise ?
Indice 1

Ce sont les conversions du cours Python : \(\text{DD} = d + \dfrac{m}{60} + \dfrac{s}{3600}\), avec un signe négatif pour "S" et "W".

Indice 2

gps[2] est la latitude sous forme de trois valeurs : gps[2][0] sont les degrés, gps[2][1] les minutes, gps[2][2] les secondes.

Indice 3

Utilise float(...) pour être sûr d'avoir des nombres.

💾 NOM_Prenom_ex37.py

EX 38Je m'entraîne 🌶️🌶️application

Exercice 38 — Photos et vie privée

Un élève publie une photo prise dans sa chambre, sans se douter que l'appareil a enregistré les coordonnées GPS du fichier.

  1. Que peut apprendre une personne malveillante en lisant les métadonnées ? Cite trois informations.
  2. Donne deux bonnes pratiques pour se protéger.
  3. Teste ce programme, qui enregistre la photo dans un nouveau fichier. Que constates-tu ?
propre.py
from PIL import Image

photo = Image.open("photo_mystere.jpg")
photo.save("propre.jpg")
print(len(Image.open("propre.jpg").getexif()))
Indice

Le nouveau fichier a-t-il encore ses métadonnées ? Compte-les avec len.

💾 NOM_Prenom_ex38.py

À retenirSynthèse

Ce que je sais faire

  • Lire les métadonnées d'une photo, avec l'explorateur ou avec Python.
  • Convertir des coordonnées GPS d'un fichier en degrés décimaux et les placer sur une carte.
  • Expliquer les risques pour la vie privée et effacer les métadonnées.