Couleur en gris
Obtenez le gris qui garde la luminosité perçue d’une couleur : #3498db devient #828282, une valeur de gris de 130, car le vert compte le plus, le rouge moins et le bleu le moins. Chaque étape du calcul est affichée. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Couleur source en hex
- #3498db
- Valeur
- 130
- Hex d’entrée
- #3498db
- Rgb d’entrée
- 52, 152, 219
- Résistance (Ω)
- 52
Un convertisseur de couleur en niveaux de gris prend une couleur opaque—écrite en code hex ou en canaux rouge, vert et bleu—et la projette vers un gris neutre qui préserve la luminosité perçue au lieu de moyenner naïvement les canaux. Collez #e74c3c, rgb(52, 152, 219) ou des entiers r, g et b séparés ; l’outil applique les poids de luminosité classiques 0.299 rouge, 0.587 vert et 0.114 bleu, arrondit à un entier de gris de 0 à 255 et renvoie le triple hex gris, la valeur numérique, une chaîne CSS rgb() et l’arithmétique étape par étape.
Pourquoi la pondération de luminosité bat la moyenne simple
La vision humaine n’est pas également sensible à la lumière rouge, verte et bleue. Le vert contribue le plus à la luminosité perçue, le rouge moins, et le bleu le moins. C’est pourquoi un bleu pur #0000ff paraît plus sombre qu’un vert pur #00ff00 alors que les deux ont un seul canal au maximum 255.
Une moyenne naïve qui additionne les trois canaux et divise par trois sous-estime donc le brillant d’une couleur riche en vert et surestime les tons riches en bleu. La pondération de luminosité corrige ce déséquilibre avec des coefficients fixes du modèle classique de luma télévisuelle souvent appelé BT.601 : le gris Y égale 0.299 fois rouge plus 0.587 fois vert plus 0.114 fois bleu, puis arrondi à l’entier le plus proche dans 0–255.
Le résultat est un seul canal qui, écrit comme #YY où chaque paire est le même octet hex, se place sur l’axe neutre de l’espace RGB en gardant la luminosité approximative de la teinte d’origine. Cette page est volontairement un outil mono-couleur, pas un filtre d’image : vous convertissez un jeton de design, une variable CSS ou un nuancier à la fois et obtenez un hex gris et une valeur auditables.
Les exercices de cours et les entretiens de code demandent souvent cette transformation à la main ; une référence déterministe lève l’ambiguïté sur les poids utilisés, l’arrondi appliqué et l’expansion du hex à trois chiffres avant la multiplication.
Conseils pratiques, limites et recherches associées
Ne passez pas de formes alpha comme #RRGGBBAA ou rgba avec un alpha significatif à conserver—cette page convertit uniquement le RGB opaque, et les longueurs inattendues sont rejetées pour que vous le remarquiez plutôt que de supprimer l’alpha en silence. Les couleurs CSS nommées comme rebeccapurple sont hors périmètre ; résolvez-les d’abord en hex avec une table de noms, puis appelez ce convertisseur.
En écrivant des tests unitaires, couvrez au moins un rouge vif, un teal dominant vert, un bleu pur, une entrée déjà grise qui doit revenir à elle-même, un raccourci à trois chiffres, une chaîne rgb() et un hex invalide volontaire pour que les régressions de validation ne passent pas.
Cette page cible les personnes cherchant un convertisseur couleur en gris, un calculateur de luminosité hex vers gris ou un outil RGB vers valeur grise gratuit en ligne ; ce n’est pas un désaturateur d’image complet, ni un convertisseur multi-espaces pour HSL LAB ou CMYK, ni un générateur de palettes.
Préférez cette capacité lorsque vous avez déjà une couleur et n’avez besoin que de son hex gris de luminosité et de sa valeur entière ; si votre pipeline doit encore émettre du HSL ou du CMYK d’impression, utilisez un convertisseur multi-formats pour ces espaces et cet outil pour l’étape monochrome.
Cas d’usage
Jetons de design monochromes depuis le hex de marque
Les designers collent des codes hex de marque et reçoivent des hex gris pondérés par luminosité pour thèmes monochromes, maquettes d’impression et UI désactivée sans ouvrir d’éditeur d’images.
Préparation de variables CSS et remplissage canvas
Convertissez les couleurs fournies par l’utilisateur depuis un sélecteur en chaînes rgb() et hex neutres pour aperçus en gris, calques de filigrane ou variables CSS adaptées à l’impression.
Questions fréquentes
Quelle formule le convertisseur couleur en gris utilise-t-il ?
L’hex gris répète ce byte trois fois comme #YY.
Quels formats de couleur sont acceptés ?
Hex #RGB ou #RRGGBB (# optionnel), CSS rgb(r,g,b), listes r,g,b nues ou champs entiers r, g et b de 0–255. Alpha et couleurs CSS nommées non acceptés.
Le convertisseur couleur en gris est-il gratuit ?
L’outil navigateur est gratuit et s’exécute en local.
En quel gris #3498db se transforme-t-il ?
Il devient #828282. La somme pondérée vaut 0,299 × 52 + 0,587 × 152 + 0,114 × 219 = 129,738, arrondie à une valeur de gris de 130, soit rgb(130, 130, 130).
Pourquoi ne pas faire simplement la moyenne du rouge, du vert et du bleu ?
Parce que l’œil ne perçoit pas les trois avec la même intensité. Le vert pèse le plus dans la luminosité et le bleu le moins : une moyenne simple assombrit les couleurs verdâtres et éclaircit les bleutées, d’où un #0000ff plus sombre que #00ff00.
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/grayscale \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color":"#3498db","hex":"valor-ejemplo"}'const res = await fetch("https://api.kit.forhosting.com/color/grayscale", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color": "#3498db",
"hex": "valor-ejemplo"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/grayscale",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color": "#3498db",
"hex": "valor-ejemplo"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/grayscale", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color":"#3498db","hex":"valor-ejemplo"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color":"#3498db","hex":"valor-ejemplo"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/grayscale", 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
{
"color": "#3498db",
"hex": "valor-ejemplo"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.grayscale",
"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_channel | 255 |
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
Les couleurs invalides—entrée vide, mauvaise longueur hex, caractères non hex, canaux hors 0–255 ou jeu de champs manquant—échouent avec une erreur claire invalid_input au lieu d’inventer un échantillon. Le chemin est un parse et une arithmétique déterministes—sans réseau, sans graines aléatoires, sans horloge—ainsi l’exécuteur gratuit du navigateur et l’API prépayée renvoient le même JSON à chaque appel.
Comment appeler l’API et ce qui revient
Les espaces environnants sont coupés, les lettres hex peuvent être majuscules ou minuscules, et le dièse est optionnel. Envoyez un corps JSON avec une chaîne de couleur ou trois champs de canal séparés. Le champ color accepte les alias hex, value, text, input et code ; exemples valides : #3498db, 3498db, #abc, rgb(52, 152, 219) et la liste nue 52, 152, 219. En alternative fournissez r, g et b (alias red, green, blue) comme entiers de 0 à 255. En succès la réponse renvoie input_hex et input_rgb de la source résolue, gray entier et alias gray_value et value, gray_hex et hex comme code neutre à six chiffres, gray_rgb comme tableau à trois éléments, css comme rgb(g, g, g), formula et weights documentant les coefficients, luminosity comme somme pondérée avant arrondi avec précision d’affichage fixe, message comme court résumé et steps comme tableau ordonné de lignes de substitution pour l’enseignement ou le débogage. Une validation échouée—couleur et canaux manquants, chaîne vide, mauvaise longueur hex, caractères non hex, préfixe de programmation 0x, canaux hors plage ou canaux fractionnaires non entiers—renvoie invalid_input et n’est pas facturée. Le tarif est un forfait $0.002 par requête réussie avec unité item et prix unitaire marginal nul.
Conseils pratiques, limites et recherches associées
Préférez envoyer le jeton exact exporté par votre outil de design, y compris le dièse si vous l’avez ; les hex avec et sans dièse fonctionnent, et la réponse normalise toujours la source en input_hex minuscule à six chiffres pour des diffs aval stables. Les tâches en échec qui renvoient invalid_input ne consomment pas le solde prépayé, ce qui garde bon marché les scripts exploratoires et la validation de formulaires lorsque l’on colle des valeurs imparfaites du presse-papiers.
Cas d'intégration
Tests unitaires pour aides à la désaturation
Générez des valeurs grises de référence depuis des fixtures hex et RGB afin que moteurs de thème et contrôles de contraste d’accessibilité affirment une mathématique de luminosité stable.
Questions techniques
Que renvoie un succès ?
La valeur entière gray (aussi gray_value et value), gray_hex / hex, gray_rgb, une chaîne css rgb(), la source input_hex et input_rgb, formula, weights, luminosity, message et steps.
Que se passe-t-il pour une couleur invalide ?
L’API renvoie invalid_input avec un message décrivant le problème (entrée vide, mauvais hex, canaux hors plage, etc.). La validation échouée n’est pas facturée.