Limiter une couleur à la gamme
Ramenez dans l’échelle de 0 à 255 les valeurs RVB qui en sortent : rouge 300, vert −20 et bleu 127.5 deviennent 255, 0 et 127.5, et vous voyez quels canaux ont changé. Rien n’est arrondi au passage. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Résistance (Ω)
- 300
- G
- -20
- B
- 127,5
- Résistance (Ω)
- 255
- G
- 0
- Rgb
- rgb(255, 0, 127.5)
- Canaux modifiés
- r, g
Limitez une couleur à sa gamme lorsque ses données RVB comportent des canaux inférieurs à zéro ou supérieurs à 255. Cet outil déterministe valide le rouge, le vert et le bleu, puis corrige chaque canal séparément vers la borne la plus proche de la plage huit bits standard. Les valeurs déjà comprises dans la plage restent intactes, y compris les fractions, car borner ne signifie pas arrondir. La réponse présente les canaux corrigés, une chaîne RVB lisible, l’existence éventuelle d’une modification et les canaux réparés.
Ce que signifie ramener une couleur RVB dans la gamme
Une couleur RVB sur huit bits exprime habituellement le rouge, le vert et le bleu sur une échelle inclusive de 0 à 255. Les données extérieures à ces bornes ne sont pas directement représentables dans cette plage : un canal rouge de 300 est trop élevé, tandis qu’un canal vert de -20 est trop faible. Le bornage règle précisément ce problème en remplaçant toute valeur inférieure à 0 par 0, toute valeur supérieure à 255 par 255 et en conservant les valeurs intermédiaires.
Chaque canal est traité indépendamment : corriger le rouge ne modifie donc ni le vert ni le bleu. L’outil renvoie les valeurs r, g et b corrigées, ainsi qu’une chaîne de fonction rgb décrivant le même résultat. Cette opération est plus ciblée qu’une conversion colorimétrique, une compression perceptuelle ou une transformation entre espaces.
Elle ne convertit ni HSL, ni Lab, ni Display P3, ni CMYK et ne cherche pas à préserver une teinte perçue après conversion. Elle valide simplement trois canaux numériques et les place de manière transparente et reproductible dans l’intervalle autorisé de 0 à 255.
Validation, valeurs fractionnaires et résultat reproductible
Les trois canaux sont obligatoires et doivent être des nombres finis. La notation scientifique est admise lorsqu’elle produit un nombre fini. Après validation, l’algorithme prend le minimum entre 255 et le maximum entre 0 et la valeur du canal.
Cette formule ne dépend d’aucun seuil caché, paramètre régional ou comportement de plateforme. Les fractions déjà dans la plage sont préservées : 127.5 reste 127.5. Ce choix est volontaire, car borner et arrondir sont deux opérations différentes.
L’implémentation n’utilise ni réseau, ni date, ni hasard, ni état partagé, ni modèle externe. Une entrée valide identique produit donc toujours les mêmes données sérialisées.
Place du bornage RVB dans un flux de traitement
Les couleurs passent souvent entre des systèmes qui ne partagent pas les mêmes hypothèses. Un calcul de shader peut dépasser la limite après l’ajout d’une lumière, une analyse d’image peut exporter une petite composante négative, une formule de tableur peut donner 255.2 et une interpolation d’animation peut brièvement dépasser sa destination. Le bornage est utile à l’endroit où ces valeurs doivent devenir des canaux RVB ordinaires pour un canevas, un générateur CSS, des miniatures, un protocole matériel ou des jetons de design.
Placez-le après le calcul susceptible de déborder et avant le consommateur qui exige des canaux bornés. Les champs signalant les changements peuvent alimenter les journaux et les mesures de qualité : vous conservez la couleur réparée tout en enregistrant que la source nécessitait une correction. N’employez pas ce bornage pour masquer des données systématiquement défectueuses ni comme remplacement d’un mappage perceptuel de gamme étendue.
Cas d’usage
Stabiliser les chaînes de rendu
Corrigez les résultats arithmétiques avant de les transmettre à un canevas, un générateur CSS ou un moteur d’image.
Questions fréquentes
Que devient un canal inférieur à zéro ?
Il devient 0. Les autres canaux sont évalués séparément et restent inchangés s’ils sont déjà dans la plage.
Que devient un canal supérieur à 255 ?
Il devient 255, qui constitue la borne supérieure de la plage de canaux RVB prise en charge.
Les valeurs RVB fractionnaires sont-elles arrondies ?
Non. Les valeurs finies comprises entre 0 et 255 sont conservées, car cette capacité borne la plage sans arrondir la précision.
Quelles valeurs sont refusées au lieu d’être limitées ?
Les canaux manquants, les mots, les cases vides et tout ce qui n’est pas un nombre fini sont refusés. Les nombres écrits en texte et la notation scientifique sont acceptés s’ils donnent un nombre réel.
Comment savoir quels canaux ont été corrigés ?
Le résultat indique si quelque chose a changé et liste dans l’ordre les canaux ajustés. Avec rouge 300, vert −20 et bleu 127.5, seuls le rouge et le vert apparaissent, car le bleu était déjà dans la plage.
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/color/clamp-gamut \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"r":300,"g":-20,"b":127.5}'const res = await fetch("https://api.kit.forhosting.com/color/clamp-gamut", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"r": 300,
"g": -20,
"b": 127.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/clamp-gamut",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"r": 300,
"g": -20,
"b": 127.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/clamp-gamut", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"r":300,"g":-20,"b":127.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"r":300,"g":-20,"b":127.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/clamp-gamut", 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
{
"r": 300,
"g": -20,
"b": 127.5
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.clamp_gamut",
"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.
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
Vous pouvez utiliser l’outil du navigateur pour une correction ponctuelle ou l’API à $0.002 par requête pour vos pipelines, imports, tests et systèmes de design.
Ce que signifie ramener une couleur RVB dans la gamme
Il fournit également le booléen changed et la liste ordonnée channels_changed, afin que vous puissiez distinguer une entrée intacte d’une entrée réparée sans effectuer vous-même la comparaison.
Validation, valeurs fractionnaires et résultat reproductible
Les champs recommandés sont r, g et b, mais les alias explicites red, green et blue sont également acceptés. Les chaînes strictement numériques conviennent aux formulaires, aux lignes issues de CSV et aux paramètres de requête ; en revanche, les chaînes vides, les mots, les booléens, les tableaux, les objets, Infinity et NaN provoquent invalid_input. Le zéro négatif devient zéro, ce qui évite une représentation signée inutile dans le JSON. L’indicateur changed ne devient vrai que lorsqu’au moins une valeur franchit une borne ; channels_changed énumère alors les noms courts concernés dans l’ordre stable rouge, vert, bleu.
Place du bornage RVB dans un flux de traitement
Dans les tests, vérifiez les canaux et channels_changed pour empêcher une évolution ultérieure d’introduire un bouclage, un arrondi ou le rejet de toute la couleur. Le navigateur exécute la même implémentation pure ; en automatisation, chaque requête API réussie coûte $0.002.
Cas d'intégration
Réparer des enregistrements RVB importés
Bornez les canaux provenant de feuilles de calcul, de CSV ou d’API avant leur stockage en RVB standard.
Créer des fixtures de test déterministes
Testez les bornes et relevez précisément les canaux RVB que votre pipeline a dû corriger.
Questions techniques
Quel est le prix d’une requête API ?
Une requête API réussie coûte $0.002. Vous pouvez aussi exécuter gratuitement la même opération déterministe dans votre navigateur.
Quelles entrées sont refusées ?
Les canaux absents, vides, non numériques ou non finis produisent invalid_input. Les trois canaux RVB sont obligatoires.