Convertisseur RGB vers OKLCH
Obtenez les coordonnées OKLCH d’une couleur RVB : 255, 87, 51 devient clarté 0.680358, chroma 0.210012 et teinte 33.691637°. Construisez des gammes et des palettes aux écarts réguliers pour l’œil. 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 (Ω)
- 255
- G
- 87
- B
- 51
- L
- 0,680358
- C
- 0,210012
- H
- 33,691637
- OKLCH
- oklch(0.680358 0.210012 33.691637)
Ce convertisseur RGB vers OKLCH transforme trois canaux sRGB usuels en coordonnées cylindriques perceptuellement uniformes. Saisissez les valeurs rouge, verte et bleue de 0 à 255 afin d’obtenir la clarté, le chroma et la teinte OKLCH, ainsi qu’une chaîne prête pour CSS. Le calcul suit un parcours entièrement déterministe : décodage de la fonction de transfert sRGB, matrices du RGB linéaire vers OKLab, puis conversion cylindrique vers OKLCH. Tout canal absent, non fini, incorrect ou hors limites produit une erreur de validation explicite au lieu d’être écrêté silencieusement.
Pourquoi passer des coordonnées sRGB à OKLCH
RGB décrit la combinaison de lumière rouge, verte et bleue d’un écran, mais des variations numériques identiques sur ces canaux ne paraissent généralement pas de même ampleur. Ajouter vingt unités peut provoquer un changement évident dans une zone de la gamme et presque imperceptible ailleurs. OKLab vise à rapprocher la distance entre coordonnées des écarts de couleur réellement perçus.
OKLCH réorganise OKLab en coordonnées cylindriques plus faciles à exploiter : la clarté indique si une couleur paraît claire ou sombre, le chroma mesure son éloignement de l’axe neutre et la teinte fournit l’angle autour de cet axe en degrés. Cette représentation convient aux gammes de jetons, aux couleurs apparentées et aux comparaisons de palettes.
Le contrat reste volontairement précis : seuls de véritables canaux sRGB entre 0 et 255 sont acceptés, y compris les fractions, sans deviner un code hexadécimal, un pourcentage, un nom de couleur ou un profil étendu. La teinte est normalisée entre zéro et moins de 360 degrés. Pour une couleur achromatique sans teinte mathématique, zéro sert de convention stable.
Comment la conversion est calculée
Une matrice OKLab ne peut pas être appliquée directement aux nombres RGB affichés, car les valeurs sRGB ordinaires sont encodées par une fonction de transfert. Chaque canal est d’abord divisé par 255, puis décodé avec la fonction sRGB par morceaux : segment linéaire pour les petites valeurs et puissance pour les autres. Les trois composantes de lumière linéaire sont multipliées par la matrice fixe RGB vers LMS de la définition OKLab.
Après la racine cubique de chaque composante LMS, une seconde matrice produit la clarté OKLab et les axes opposés a et b. La conversion cylindrique calcule ensuite le chroma comme longueur euclidienne du couple a, b et la teinte avec atan2, transformée de radians en degrés et normalisée positivement. La clarté emploie l’échelle OKLab conventionnelle, approximativement de zéro à un pour sRGB, et non un pourcentage.
La chaîne oklch reprend exactement ces valeurs arrondies.
Utiliser le résultat de manière fiable
Envoyez les champs numériques r, g et b. Tous sont obligatoires, finis et compris entre 0 et 255 inclus. Les fractions sont admises, car certaines images et chaînes de traitement conservent une précision supérieure à huit bits, mais les chaînes numériques, NaN, Infinity, tableaux et objets sont refusés.
Une réponse valide répète les canaux contrôlés et renvoie l, c, h ainsi qu’une chaîne oklch compacte. Lors de la migration d’une palette, conservez les RGB d’origine avec les coordonnées converties jusqu’à validation visuelle. OKLCH facilite les modifications perceptuelles, mais augmenter le chroma ou changer la clarté peut créer une couleur hors de la gamme de l’écran ou du format cible.
Ce convertisseur décrit le sRGB fourni ; il ne réalise ni mappage de gamme, ni contrôle de contraste, ni composition alpha, ni conversion de profil, ni certification d’accessibilité. Employez ensuite un outil spécialisé. Sans réseau, horloge, hasard ou état mutable, les deux canaux donnent le même résultat.
Cas d’usage
Moderniser les jetons de design
Convertissez les anciennes couleurs RGB en OKLCH avant de construire des gammes perceptuelles de clarté et de chroma.
Étudier les relations d’une palette
Comparez clarté, chroma et teinte sans assimiler les écarts bruts des canaux RGB à des écarts visuels.
Préparer des couleurs CSS
Produisez une chaîne OKLCH stable depuis sRGB pour la documentation, les prototypes, les feuilles de style ou les chaînes de jetons.
Questions fréquentes
Quelle plage RGB est acceptée ?
Chaque canal r, g et b doit être un nombre fini entre 0 et 255 inclus. Les entiers et les fractions sont admis.
La clarté OKLCH est-elle fournie en pourcentage ?
Non. Le champ l suit l’échelle numérique OKLab conventionnelle, environ 0 à 1 pour sRGB. Multipliez par 100 uniquement si la destination exige un pourcentage.
Pourquoi la teinte vaut-elle zéro pour le gris, le noir ou le blanc ?
La teinte est indéfinie lorsque le chroma est presque nul. Le convertisseur renvoie 0 degré comme convention déterministe plutôt que null ou un angle issu du bruit numérique.
Cet outil effectue-t-il un mappage de gamme ?
Non. Il convertit une couleur sRGB déjà dans sa gamme. Après modification des coordonnées, utilisez un outil de mappage avant une sortie vers un espace limité.
Puis-je saisir des canaux avec décimales ?
Oui. Chaque canal peut être n’importe quel nombre de 0 à 255, décimales comprises. Les codes hex, pourcentages et noms de couleur ne sont pas devinés, et une valeur manquante ou hors plage est refusée au lieu d’être écrêtée.
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/rgb-oklch \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"r":255,"g":87,"b":51}'const res = await fetch("https://api.kit.forhosting.com/color/rgb-oklch", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"r": 255,
"g": 87,
"b": 51
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/rgb-oklch",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"r": 255,
"g": 87,
"b": 51
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/rgb-oklch", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"r":255,"g":87,"b":51}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"r":255,"g":87,"b":51}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/rgb-oklch", 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": 255,
"g": 87,
"b": 51
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb_oklch",
"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
Comment la conversion est calculée
Les coordonnées sont arrondies à six décimales pour fournir un JSON stable, lisible et suffisamment précis.
Utiliser le résultat de manière fiable
Une requête API réussie coûte $0.002 par élément, tandis que la version navigateur s’exécute localement.
Questions techniques
Combien coûte une conversion par API ?
Une requête réussie coûte $0.002 par élément. Le convertisseur du navigateur fonctionne localement et une entrée incorrecte renvoie une erreur typée.