Rotation d’image en degrés
La rotation d’image en degrés calcule les dimensions en pixels nécessaires pour contenir une image rectangulaire après son pivotement.
Lancer gratuitement
Indiquez la largeur et la hauteur d’origine, puis l’angle horaire. Les multiples de 90 degrés sont acceptés par défaut et conservent ou permutent exactement les dimensions. Activez la rotation libre pour tout angle fini afin d’obtenir le plus petit cadre entier, aligné sur les axes, qui contient le rectangle pivoté. Seule la géométrie intervient : aucune image n’est envoyée, décodée, stockée ou modifiée.
Calculez le cadre pour un quart de tour
Saisissez la largeur et la hauteur de la source sous forme de nombres entiers positifs de pixels, puis indiquez l’angle de rotation. Par défaut, cet angle doit être un multiple de 90 degrés. Une rotation de 0 ou 180 degrés conserve l’ordre des dimensions, tandis qu’une rotation de 90 ou 270 degrés permute la largeur et la hauteur. Cette règle vaut aussi pour les angles négatifs et ceux qui dépassent un tour complet, car le calculateur ramène l’angle à une position équivalente comprise entre 0 et moins de 360 degrés. Ainsi, une image de 1920 sur 1080 pixels tournée de 90 degrés nécessite un cadre de 1080 sur 1920 ; une rotation de 450 degrés donne le même résultat. Les quarts de tour emploient une logique entière exacte plutôt que la trigonométrie, afin d’éviter les minuscules erreurs d’arrondi près des angles droits. Les valeurs obtenues décrivent le canevas requis pour contenir le rectangle pivoté, et non une image redimensionnée.
Activez la rotation libre pour tout autre angle
Réglez free_rotate sur true lorsque l’angle n’est pas un multiple de 90 degrés. Le calculateur considère la source comme un rectangle centré sur l’axe de rotation et détermine le plus petit cadre aligné sur les axes qui entoure ses coins après pivotement. Sa largeur repose sur les contributions horizontales absolues de la largeur et de la hauteur d’origine ; sa hauteur utilise les contributions verticales correspondantes. Le résultat géométrique pouvant tomber entre deux pixels, chaque côté est arrondi vers le haut au pixel entier suivant. Ce choix est volontaire : un arrondi au plus proche risquerait de produire un canevas trop petit et de couper un bord ou un coin. Un carré demande généralement un cadre plus grand près de 45 degrés, tandis qu’une image panoramique peut gagner beaucoup de hauteur avec une inclinaison modérée. Le sens est horaire par convention, mais des inclinaisons positives et négatives équivalentes donnent les mêmes dimensions extérieures.
Exploitez le résultat sans risque dans vos traitements
Utilisez la largeur et la hauteur renvoyées pour créer un canevas cible, réserver de l’espace dans une mise en page, estimer la mémoire ou préparer une commande de traitement d’image. Le calcul suppose une rotation autour du centre du rectangle et un canevas de sortie aligné sur les axes. Si un autre outil pivote autour d’un coin, applique une perspective, retire les pixels transparents, ajoute une bordure ou prévoit une marge personnalisée, ses dimensions finales peuvent différer. Les dimensions sources doivent être des entiers positifs ne dépassant pas un milliard de pixels, et l’angle doit être un nombre fini. Le champ free_rotate doit être un véritable booléen, et non un texte tel que "true". Les valeurs incorrectes sont refusées plutôt que converties silencieusement. L’algorithme n’utilise ni réseau, ni hasard, ni heure actuelle, ni décodage de fichier, ni état caché. L’automatisation par API coûte $0.002 par requête.
Cas d’usage
Préparer un canevas de rotation
Allouez un canevas assez grand pour contenir tous les coins de l’image pivotée sans les couper.
Planifier une mise en page adaptative
Réservez la largeur et la hauteur exactes avant d’afficher un visuel pivoté dans une page ou une application.
Construire des commandes graphiques
Calculez les dimensions cibles avant de transmettre la rotation à une autre bibliothèque ou à un service graphique.
Questions fréquentes
Cette capacité fait-elle pivoter l’image elle-même ?
Non. Elle calcule uniquement les dimensions du cadre et ne reçoit ni ne modifie jamais les pixels.
Pourquoi les autres angles sont-ils refusés par défaut ?
Le réglage par défaut protège les traitements qui attendent les dimensions exactes d’un quart de tour. Activez free_rotate pour accepter tout angle fini.
Comment les dimensions fractionnaires sont-elles traitées ?
Chaque côté est arrondi vers le haut au pixel entier afin que le canevas cible ne coupe pas le rectangle pivoté.
Puis-je utiliser un angle négatif ou supérieur à 360 degrés ?
Oui. Les angles sont ramenés à leur position équivalente au cours d’un tour complet.
Quel est le prix d’une requête API ?
Chaque requête API coûte $0.002.
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-degrees \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"width":1920,"height":1080,"angle":90}'const res = await fetch("https://api.kit.forhosting.com/image/rotate-degrees", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"width": 1920,
"height": 1080,
"angle": 90
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/rotate-degrees",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"width": 1920,
"height": 1080,
"angle": 90
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/rotate-degrees", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"width":1920,"height":1080,"angle":90}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"width":1920,"height":1080,"angle":90}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/rotate-degrees", 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
{
"width": 1920,
"height": 1080,
"angle": 90
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.rotate_degrees",
"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. |