Régler la température de couleur
Ce calculateur transforme les moyennes rouge, verte et bleue d’une image et un décalage en Kelvin en trois multiplicateurs de canal.
Lancer gratuitement
Il estime la température de couleur corrélée, applique le changement chaud ou froid demandé, puis fournit des gains RGB normalisés. Vous pouvez les intégrer à un traitement en lumière linéaire pour obtenir une balance des blancs reproductible sans envoyer l’image. Le calcul est déterministe et chaque requête API coûte $0.002.
Préparez une moyenne RGB représentative
Commencez par la moyenne arithmétique de chaque canal sRGB 8 bits sur les pixels censés représenter la correction. Saisissez avg_r, avg_g et avg_b sur l’échelle de 0 à 255. Une moyenne de l’image entière convient aux photographies éclairées uniformément, aux séries de produits, aux vignettes et aux aperçus automatisés. Toutefois, lorsqu’un sujet présente une couleur dominante, la moyenne d’une zone neutre décrit souvent mieux l’éclairage que l’ensemble du cadre. Un mur rouge ou un océan bleu peut dominer la moyenne globale alors que la balance des blancs est déjà correcte. Le calculateur n’analyse pas les pixels, ne reconnaît pas les objets neutres et ne sépare pas l’éclairage de la couleur du sujet : il emploie exactement le résumé que vous fournissez. Une moyenne entièrement noire est refusée, car elle ne contient aucune chromaticité permettant d’estimer une température. Les nombres non finis et les valeurs hors de la plage 8 bits sont également rejetés. Conservez la même méthode d’échantillonnage dans toute une série afin que les corrections restent comparables.
Choisissez le décalage Kelvin et comprenez le modèle
Indiquez shift_kelvin comme une variation relative et non comme une destination absolue. Une valeur positive augmente la température estimée et crée une correction plus froide ; une valeur négative la diminue et crée une correction plus chaude. Les décalages de -10,000 à 10,000 Kelvin sont acceptés, tandis que la cible doit rester entre 1,000 et 40,000 Kelvin. Le calcul linéarise d’abord les canaux sRGB moyens, les convertit en chromaticité CIE XYZ, puis estime la température corrélée avec l’approximation cubique de McCamy. Il évalue ensuite des courbes RGB déterministes de corps noir aux températures estimée et cible. Le rapport entre ces deux points blancs produit des gains normalisés pour que le vert soit égal à un. Il s’agit d’une approximation technique, et non d’une mesure spectrale. La température corrélée est surtout pertinente près du lieu planckien : une moyenne très saturée ne donne donc qu’une estimation indicative. La méthode et les températures renvoyées rendent cette hypothèse explicite dans votre chaîne de traitement.
Appliquez les multiplicateurs sans dégrader l’image
Appliquez red_multiplier, green_multiplier et blue_multiplier aux valeurs RGB en lumière linéaire, jamais directement aux nombres 8 bits encodés avec gamma. Une chaîne fiable décode sRGB en lumière linéaire, multiplie chaque canal par son gain, traite les valeurs dépassant la plage d’affichage par exposition ou mappage tonal, puis réencode en sRGB. La multiplication directe des octets peut sembler acceptable pour un petit changement, mais elle ne conserve pas la relation voulue entre lumière et données. Le vert est normalisé à un : le résultat exprime donc l’équilibre chromatique, indépendamment d’une correction d’exposition. Le rouge ou le bleu peut dépasser un et écrêter les hautes lumières ; travaillez en virgule flottante ou avec une profondeur suffisante avant l’exportation. Testez des images représentatives avant de traiter une vaste collection, surtout si la moyenne vient d’une scène colorée. L’API coûte $0.002 par requête et le calculateur web exécute localement la même opération déterministe.
Cas d’usage
Uniformiser une série de photos produit
Calculez des gains reproductibles avec la même méthode d’échantillonnage avant l’exportation du catalogue.
Prototyper une commande de balance des blancs
Convertissez le déplacement d’un curseur Kelvin en multiplicateurs RGB explicites pour un éditeur web ou de bureau.
Consigner des corrections reproductibles
Enregistrez les températures estimée et cible ainsi que les gains dans une chaîne multimédia automatisée.
Questions fréquentes
Que produit un décalage Kelvin positif ?
Il augmente la température cible estimée et donne une correction plus froide, avec relativement plus de bleu et moins de rouge.
Quelle plage de décalage est acceptée ?
La variation doit rester entre -10,000 et 10,000 Kelvin inclus, et la cible entre 1,000 et 40,000 Kelvin.
Pourquoi le multiplicateur vert vaut-il toujours un ?
Les gains sont normalisés sur le vert afin d’exprimer l’équilibre chromatique séparément d’un réglage d’exposition.
Faut-il multiplier directement les valeurs RGB 8 bits ?
Non. Décodez sRGB en lumière linéaire, appliquez les gains, gérez les hautes lumières, puis réencodez en sRGB.
Quelle est la précision de la température estimée ?
C’est une approximation fondée sur la chromaticité moyenne, plus fiable avec un éclairage neutre qu’avec des sujets très saturés.
Quel est le prix d’une requête API ?
Chaque requête API coûte $0.002. La version web effectue gratuitement le même calcul déterministe sur l’appareil.
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/color-temperature-adjust \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"avg_r":142,"avg_g":128,"avg_b":110,"shift_kelvin":1200}'const res = await fetch("https://api.kit.forhosting.com/image/color-temperature-adjust", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"avg_r": 142,
"avg_g": 128,
"avg_b": 110,
"shift_kelvin": 1200
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/color-temperature-adjust",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"avg_r": 142,
"avg_g": 128,
"avg_b": 110,
"shift_kelvin": 1200
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/color-temperature-adjust", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"avg_r":142,"avg_g":128,"avg_b":110,"shift_kelvin":1200}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"avg_r":142,"avg_g":128,"avg_b":110,"shift_kelvin":1200}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/color-temperature-adjust", 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
{
"avg_r": 142,
"avg_g": 128,
"avg_b": 110,
"shift_kelvin": 1200
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.color_temperature_adjust",
"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
min_shift_kelvin | -10000 |
max_shift_kelvin | 10000 |
min_temperature_kelvin | 1000 |
max_temperature_kelvin | 40000 |
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. |