Calculer la correction EXIF
Obtenez la correction exacte pour toute valeur d'orientation EXIF de 1 à 8 : l'orientation 6 demande une rotation de 90 degrés dans le sens horaire sans retournement, et les valeurs en miroir reçoivent aussi le bon retournement. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Orientation
- 6
- Rotation (degrés)
- 90
- Ordre des opérations
- flip_then_rotate
La balise d’orientation EXIF indique au logiciel comment transformer les pixels stockés afin d’afficher une image à l’endroit. Cette capacité convertit toute valeur valide de 1 à 8 en une instruction directement exploitable : rotation horaire, indicateurs de retournement horizontal ou vertical et ordre d’application. Elle gère les rotations courantes des appareils photo ainsi que les cas réfléchis souvent mal implémentés. Vous pouvez intégrer le résultat à une chaîne de traitement d’images, un service de vignettes, un validateur de téléversements ou un outil d’inspection des métadonnées sans entretenir votre propre table d’orientation.
Pourquoi une photo droite peut contenir des pixels couchés
De nombreux appareils photo et téléphones évitent de réorganiser chaque pixel lorsque l’appareil pivote. Ils stockent plutôt la grille capturée dans l’orientation pratique pour le capteur, puis inscrivent une balise d’orientation EXIF indiquant au logiciel comment la présenter. Un logiciel qui respecte cette balise affiche la photo à l’endroit, tandis qu’un logiciel qui l’ignore peut montrer le même fichier couché, renversé ou réfléchi.
La balise définit huit valeurs, pas seulement quatre angles. Les valeurs 1, 3, 6 et 8 couvrent la position normale, le demi-tour et les quarts de tour. Les valeurs 2, 4, 5 et 7 comportent une réflexion : une simple rotation échoue donc avec certains scanners, objectifs frontaux et fichiers retouchés.
Cette capacité reçoit la valeur numérique lue dans les métadonnées et renvoie la correction exacte. Elle ne décode pas l’image et ne modifie aucun pixel ; elle fournit l’instruction fiable à appliquer dans votre processeur.
Comment appliquer la transformation renvoyée
Envoyez un entier dans le champ orientation. Cet ordre est essentiel pour les orientations 5 et 7, car réflexion et rotation ne commutent pas ; les inverser peut produire une autre orientation réfléchie. La correspondance canonique exprime l’orientation 4 par un retournement horizontal suivi de 180 degrés, géométriquement équivalent à un retournement vertical.
Un seul axe canonique simplifie le code en aval, tandis que l’indicateur vertical explicite stabilise la structure de réponse. L’orientation 1 ne demande aucune correction. Les valeurs hors de 1 à 8, fractions, chaînes numériques, champs absents et autres types produisent une erreur d’entrée non valide plutôt qu’une estimation.
Où placer cette conversion dans une chaîne de traitement
Utilisez ce calcul juste après la lecture de la balise Orientation par un analyseur EXIF et avant le redimensionnement, le recadrage, l’OCR, la détection de visages ou la création de vignettes. Une normalisation précoce permet aux coordonnées suivantes de viser l’affichage redressé et évite un recadrage sur le mauvais bord ou une reconnaissance de texte sur des lignes couchées. Si votre décodeur applique déjà automatiquement l’orientation EXIF, ne répétez pas la transformation : désactivez ce comportement ou réservez cette réponse à l’inspection.
Après une transformation physique des pixels, inscrivez généralement Orientation 1 ou supprimez l’ancienne balise, faute de quoi un lecteur conforme pourrait corriger une seconde fois. Cette capacité déterministe n’utilise ni données d’image, ni réseau, ni heuristique propre à un appareil. Une balise produit donc toujours la même instruction.
Elle permet également d’auditer une bibliothèque avec des fichiers réfléchis rarement rencontrés parmi les photos ordinaires.
Cas d’usage
Normaliser les photos téléversées
Convertissez la balise Orientation de chaque envoi avant de créer les vignettes, afin que chaque fichier dérivé contienne des pixels réellement redressés.
Préparer les numérisations pour l’OCR
Corrigez les pixels pivotés ou réfléchis avant la reconnaissance de texte, l’analyse de mise en page et l’extraction par coordonnées.
Tester une bibliothèque d’images
Comparez son comportement pour les huit valeurs EXIF à une correspondance canonique stable de rotations et de retournements.
Questions fréquentes
Quelles valeurs sont acceptées ?
Seules les orientations EXIF entières de 1 à 8 sont acceptées.
Cette capacité fait-elle pivoter l’image ?
Non. Elle renvoie la transformation qui redresse les pixels stockés ; votre bibliothèque de traitement d’images doit l’appliquer.
Pourquoi faut-il des retournements ?
Quatre orientations EXIF comportent une réflexion. Une rotation seule ne peut pas représenter correctement les orientations réfléchies 2, 4, 5 et 7.
Faut-il retourner ou pivoter en premier ?
Retournez d'abord, puis faites pivoter dans le sens horaire. L'ordre compte pour les orientations 5 et 7, car un reflet et une rotation ne donnent pas la même image si on les inverse.
Et si mon logiciel photo corrige déjà l'orientation tout seul ?
Dans ce cas, n'appliquez pas la correction une seconde fois, sinon la photo sera tournée deux fois. Désactivez ce réglage automatique ou servez-vous du résultat uniquement pour vérifier ce qu'indique le fichier.
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/exif-orientation-fix \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"orientation":6}'const res = await fetch("https://api.kit.forhosting.com/image/exif-orientation-fix", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"orientation": 6
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/exif-orientation-fix",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"orientation": 6
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/exif-orientation-fix", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"orientation":6}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"orientation":6}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/exif-orientation-fix", 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
{
"orientation": 6
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.exif_orientation_fix",
"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
Comment appliquer la transformation renvoyée
La réponse reprend cette valeur et fournit rotation_degrees sous la forme 0, 90, 180 ou 270, dans le sens horaire. Elle contient aussi les indicateurs booléens flip_horizontal et flip_vertical. operation_order vaut flip_then_rotate : le retournement actif s’applique donc à la grille stockée avant la rotation.
Questions techniques
Dans quel ordre appliquer retournement et rotation ?
Retournez d’abord les pixels stockés selon l’indicateur, puis effectuez la rotation horaire rotation_degrees, conformément à operation_order.
Quel est le tarif par API ?
Chaque requête API coûte $0.002. Le calcul fonctionne aussi dans l’exécuteur gratuit du navigateur, sans téléversement ni accès réseau.