Confirmez la suppression des métadonnées GPS d’une image
Comparez les métadonnées d'une photo avant et après nettoyage et confirmez qu'aucune position ne subsiste : dans l'exemple, les balises de latitude, longitude et altitude figurent parmi les 3 retirées, et toute balise GPS restante fait échouer le contrôle. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
Il est facile d’affirmer que les métadonnées de localisation ont été supprimées, mais il est essentiel de le vérifier. Cette capacité compare les métadonnées analysées avant et après une opération de nettoyage, repère récursivement les champs liés au GPS et confirme qu’aucun ne subsiste. Elle indique les chemins exacts supprimés afin d’alimenter les contrôles automatiques de confidentialité, les processus de publication et les journaux d’audit. Si une seule balise GPS demeure, la requête renvoie une erreur plutôt qu’un succès trompeur.
Recueillez des métadonnées comparables avant et après
Commencez par extraire les métadonnées de l’image originale et du résultat nettoyé avec le même lecteur lorsque cela est possible. Un lecteur unique préserve la cohérence des noms et de l’imbrication des espaces de noms, ce qui facilite l’interprétation du rapport. Le vérificateur parcourt récursivement les deux objets : il reconnaît donc un champ d’appareil comme <code>EXIF.GPSLatitude</code>, une clé XMP telle que <code>XMP.exif:GPSLongitude</code> et les valeurs d’un objet <code>GPS</code>.
L’entrée contient des métadonnées, et non les octets de l’image : cette capacité contrôle les preuves produites par votre chaîne d’extraction et de nettoyage sans modifier le fichier. Conservez l’instantané original avant le nettoyage, car il établit quelles données de localisation existaient. Les autres champs relatifs à l’appareil, aux droits, à l’orientation ou à la description peuvent rester.
Pour un audit fiable, rattachez les deux instantanés au même identifiant de traitement et vérifiez qu’ils correspondent exactement aux fichiers évalués.
Interprétez la confirmation et la liste des balises retirées
Une réponse réussie signifie que l’instantané final ne contient aucune balise GPS reconnue. Un instantané initial dépourvu de balises GPS reste valide : il confirme que le second est également propre et renvoie une liste vide. La détection repose sur les noms des clés et les espaces de noms GPS, non sur la valeur des coordonnées.
Une balise présente est donc comptée même si sa valeur est zéro, vide ou null. Cette règle prudente vérifie l’existence du champ sans supposer que son contenu est exploitable. Les conteneurs GPS vides ne comptent pas, car ils ne portent aucune métadonnée terminale.
Le tri déterministe permet de conserver les résultats, de comparer les exécutions ou d’imposer une politique précise sans dépendre de l’ordre des propriétés.
Interrompez le processus si des données de localisation subsistent
Considérez ce résultat comme un échec du nettoyage : ne publiez, ne téléversez, n’envoyez et n’archivez pas l’image en la déclarant respectueuse de la confidentialité. Vérifiez si l’outil a omis un champ GPS EXIF, conservé une propriété de localisation XMP ou déplacé les métadonnées sous un autre espace de noms. Relancez le nettoyage avec la politique appropriée, extrayez un nouvel instantané du résultat, puis recommencez la vérification.
Ce refus par défaut empêche une suppression partielle de paraître réussie uniquement parce que certaines coordonnées ont disparu. Le parcours limite la profondeur et le nombre de nœuds afin d’éviter une consommation incontrôlée. Il reste déterministe et n’utilise ni réseau, ni heure courante, ni hasard.
Intégrez cette réponse à un dispositif plus large : noms de fichiers, pixels visibles, légendes, fichiers annexes et bases de ressources peuvent aussi divulguer un lieu.
Cas d’usage
Bloquer la publication de photos non sûres
Arrêtez un CMS ou un processus éditorial lorsque l’image traitée expose encore un champ GPS.
Auditer une chaîne de confidentialité multimédia
Consignez précisément les chemins GPS disparus entre les métadonnées source et celles du résultat assaini.
Tester les outils de nettoyage des métadonnées
Employez des exemples avant-après fixes pour détecter une régression après un changement de bibliothèque, d’encodeur ou de règle.
Questions fréquentes
Cette capacité retire-t-elle les métadonnées GPS d’une image ?
Non. Elle contrôle les métadonnées analysées avant et après une opération distincte et indique les balises GPS disparues.
Les structures EXIF et XMP imbriquées sont-elles prises en charge ?
Oui. Le vérificateur parcourt les objets imbriqués et reconnaît les champs préfixés par GPS ainsi que les valeurs des espaces GPS.
Une valeur GPS vide ou null compte-t-elle encore ?
Oui. Le contrôle de confidentialité vérifie la présence de la balise, même si sa valeur actuelle semble inutilisable.
Que se passe-t-il si une balise GPS survit au nettoyage ?
Le contrôle échoue au lieu d'annoncer un succès et nomme les balises restantes. Ne publiez pas l'image comme sûre : relancez le nettoyage, extrayez de nouveau les métadonnées du nouveau fichier et refaites le contrôle.
Une balise GPS vide ou à zéro compte-t-elle encore ?
Oui. La reconnaissance repose sur le nom de la balise, pas sur sa valeur : une entrée GPS vide ou égale à zéro compte donc comme restante. Un groupe GPS vide, sans rien à l'intérieur, ne compte pas.
Peut-on contrôler une image qui n'a jamais eu de position ?
Oui. Si les métadonnées d'avant ne contiennent aucune balise GPS, la comparaison reste valable : elle confirme que celles d'après sont propres aussi et renvoie une liste vide de balises retirées.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/image/metadata-gps-strip-confirm \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"before_metadata":{"EXIF":{"Make":"Example Camera","GPSLatitude":"51 deg 30'\'' 26.00 N","GPSLongitude":"0 deg 7'\'' 39.00 W"},"XMP":{"Creator":"Studio"}},"after_metadata":{"EXIF":{"Make":"Example Camera"},"XMP":{"Creator":"Studio"}}}'const res = await fetch("https://api.kit.forhosting.com/image/metadata-gps-strip-confirm", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"before_metadata": {
"EXIF": {
"Make": "Example Camera",
"GPSLatitude": "51 deg 30' 26.00 N",
"GPSLongitude": "0 deg 7' 39.00 W"
},
"XMP": {
"Creator": "Studio"
}
},
"after_metadata": {
"EXIF": {
"Make": "Example Camera"
},
"XMP": {
"Creator": "Studio"
}
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/metadata-gps-strip-confirm",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"before_metadata": {
"EXIF": {
"Make": "Example Camera",
"GPSLatitude": "51 deg 30' 26.00 N",
"GPSLongitude": "0 deg 7' 39.00 W"
},
"XMP": {
"Creator": "Studio"
}
},
"after_metadata": {
"EXIF": {
"Make": "Example Camera"
},
"XMP": {
"Creator": "Studio"
}
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/metadata-gps-strip-confirm", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"before_metadata":{"EXIF":{"Make":"Example Camera","GPSLatitude":"51 deg 30\' 26.00 N","GPSLongitude":"0 deg 7\' 39.00 W"},"XMP":{"Creator":"Studio"}},"after_metadata":{"EXIF":{"Make":"Example Camera"},"XMP":{"Creator":"Studio"}}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"before_metadata":{"EXIF":{"Make":"Example Camera","GPSLatitude":"51 deg 30' 26.00 N","GPSLongitude":"0 deg 7' 39.00 W"},"XMP":{"Creator":"Studio"}},"after_metadata":{"EXIF":{"Make":"Example Camera"},"XMP":{"Creator":"Studio"}}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/metadata-gps-strip-confirm", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"before_metadata": {
"EXIF": {
"Make": "Example Camera",
"GPSLatitude": "51 deg 30' 26.00 N",
"GPSLongitude": "0 deg 7' 39.00 W"
},
"XMP": {
"Creator": "Studio"
}
},
"after_metadata": {
"EXIF": {
"Make": "Example Camera"
},
"XMP": {
"Creator": "Studio"
}
}
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.metadata_gps_strip_confirm",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 15 |
max_megapixels | 12 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Recueillez des métadonnées comparables avant et après
Transmettez ces objets analysés sous les noms <code>before_metadata</code> et <code>after_metadata</code>.
Interprétez la confirmation et la liste des balises retirées
Le champ <code>confirmed</code> vaut true, <code>gps_tags_after</code> vaut zéro et <code>removed_tags</code> présente dans un ordre stable les chemins qui existaient avant le nettoyage. <code>removed_count</code> donne la longueur de cette liste, tandis que <code>gps_tags_before</code> explicite l’exposition initiale.
Interrompez le processus si des données de localisation subsistent
Si l’instantané final comporte une balise GPS, la capacité renvoie <code>invalid_input</code> et nomme les chemins encore présents.
Questions techniques
Que se passe-t-il si une balise GPS subsiste ?
La requête échoue avec une erreur invalid_input qui énumère les chemins restants, afin qu’un nettoyage partiel ne passe pas pour une réussite.
Quel est le prix d’une vérification par API ?
Chaque requête coûte $0.002. L’implémentation déterministe dans le navigateur emploie la même logique de contrôle.