Faire pivoter une image
Faire pivoter une image, c’est la tourner autour de son centre pour corriger son orientation : redresser une photo prise de travers, remettre à l’endroit un scan couché, ou passer du paysage au portrait. L’outil applique une rotation par quart de tour ou d’un angle libre, et vous rend l’image correctement orientée.
Exécuter en ligne
Exécutez cette tâche sur nos serveurs, avec votre compte. Les outils gratuits tournent dans votre navigateur ; celui-ci est facturé sur votre solde KIT au prix affiché ci-dessus.
Quart de tour ou angle libre
Deux besoins reviennent souvent. Le premier, une rotation par multiples de 90 degrés : une photo affichée couchée qu’il faut remettre debout, un scan tourné d’un quart de tour. Le second, une rotation d’un petit angle pour redresser un horizon penché ou un document photographié de biais. L’outil couvre les deux : vous indiquez l’angle, il applique la rotation autour du centre de l’image.
L’orientation EXIF, source de surprises
Une photo peut paraître droite sur le téléphone puis s’afficher couchée ailleurs : c’est souvent une question d’orientation enregistrée dans les métadonnées, que tous les logiciels ne lisent pas de la même façon. Appliquer une rotation réelle fixe l’image dans le bon sens de manière physique, pixel par pixel, si bien qu’elle apparaît correctement partout, quel que soit l’outil qui l’ouvre ensuite.
Ce que devient le cadre
Une rotation de 90, 180 ou 270 degrés échange simplement largeur et hauteur, sans rien perdre. Une rotation d’un angle quelconque, en revanche, oblige à gérer les coins : soit l’image est agrandie pour tout contenir, avec des zones de fond ajoutées, soit elle est recadrée pour rester rectangulaire. L’outil applique l’option choisie afin d’éviter les bords vides inattendus.
Cas d’usage
Un scan remis à l’endroit
Julien Lefèvre a numérisé un document qui s’affiche couché. Une rotation d’un quart de tour le remet debout, prêt à être lu et joint à un dossier.
Une photo de téléphone qui s’affiche de travers
Sophie Nguyen constate qu’une photo droite sur son mobile apparaît couchée sur l’ordinateur. Une rotation réelle fixe l’orientation, et l’image s’affiche correctement partout.
Un horizon redressé
Camille Moreau redresse une photo de paysage légèrement penchée. Une petite rotation, puis un recadrage, donnent une image bien d’aplomb pour son article.
Questions fréquentes
Puis-je tourner d’un angle précis, pas seulement d’un quart de tour ?
Oui. L’outil applique aussi bien les rotations par multiples de 90 degrés que les petits angles pour redresser un horizon penché ou un document photographié de biais.
Pourquoi ma photo est-elle droite sur le téléphone mais couchée ailleurs ?
Souvent à cause de l’orientation enregistrée dans les métadonnées, que les logiciels n’interprètent pas tous pareil. Une rotation réelle fixe l’image physiquement dans le bon sens, pour qu’elle s’affiche correctement partout.
Que deviennent les coins si je tourne d’un angle quelconque ?
Une rotation libre laisse des angles à gérer : soit l’image est agrandie avec un fond ajouté pour tout contenir, soit elle est recadrée pour rester rectangulaire. Vous choisissez l’option selon le rendu voulu.
La rotation dégrade-t-elle l’image ?
Une rotation par quart de tour est sans perte : elle échange largeur et hauteur, rien d’autre. Une rotation d’un angle libre implique un léger recalcul des pixels, mais le résultat reste net à l’écran.
Combien coûte l’opération ?
Le tarif affiché est de $0.002 par requête et $0.005 par image, via l’API. Aucun abonnement, aucun compte à créer : le paiement se fait directement.
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/rotate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/image/rotate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/rotate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/rotate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/rotate", 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
{
"image": "https://ejemplo.com/imagen.jpg"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.rotate",
"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. |