Simuler la protanomalie d'une couleur
Prévisualisez une couleur telle que la voit une personne moins sensible au rouge : le rouge vif #e74c3c devient #416f3e avec l’intensité par défaut de 0.6. Allez de 0, sans changement, à 1, proche de la protanopie, avant de figer vos couleurs de marque. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
La protanomalie est une forme courante de trichromatie anormale dans laquelle les cônes à grande longueur d'onde (L) de la rétine présentent une sensibilité réduite à la lumière rouge. Les designers, les auditeurs d'accessibilité et les enseignants ont souvent besoin d'un aperçu rapide et déterministe de l'aspect d'une couleur de marque, d'une série de graphique ou d'un état d'interface lorsque la discrimination du rouge s'affaiblit — non une protanopie complète, mais un mélange partiel entre la vision normale et une projection protane. Cet outil pour simuler la protanomalie sur une couleur accepte une couleur hex ou RGB plus une sévérité optionnelle de zéro à un, convertit la couleur dans l'espace de cônes LMS, applique partiellement une transformée protane de style Viénot qui reconstruit le canal L à partir de M et S, reconvertit en RGB et renvoie l'hex simulé, les canaux et la chaîne CSS. Une sévérité de zéro laisse la couleur inchangée ; une sévérité de un approxime la protanopie complète ; la valeur par défaut de zéro virgule six modélise une protanomalie modérée typique.
Ce que signifie la simulation de protanomalie et comment fonctionne la transformée protane partielle
La vision des couleurs humaine normale est trichromatique : trois types de cônes (L, M et S) échantillonnent le spectre aux grandes, moyennes et courtes longueurs d'onde. Dans la protanomalie le photopigment du cône L est décalé ou moins efficace, de sorte que les rouges paraissent plus sombres ou moins saturés et que les paires rouge–vert sont plus difficiles à séparer qu'en vision normale, tout en conservant trois classes de cônes — contrairement à la protanopie, où le canal L est effectivement absent.
Un modèle d'ingénierie pratique n'a pas besoin d'un spectre physiologique complet : il mappe le RGB d'affichage vers LMS, remplace la coordonnée L par une combinaison linéaire de M et S qui approxime le plan protanopique (classiquement L égal à deux virgule zéro deux trois quatre quatre fois M moins deux virgule cinq deux cinq huit un fois S selon des matrices de style Viénot, Brettel et Mollon), puis mappe LMS vers RGB. La simulation dichromatique complète utilise ce remplacement seul.
La protanomalie se modélise en mélangeant le LMS d'origine avec le LMS protane via un poids de sévérité s dans l'intervalle unitaire : L prime égale (un moins s) fois L plus s fois L protane, tandis que M et S restent sur le trajet d'origine avant la transformée inverse. Cette application partielle est déterministe, peu coûteuse et suffisante pour des aperçus d'interface, des audits de palette et des démonstrations pédagogiques.
Ce n'est pas un outil de diagnostic clinique et ne remplace pas les tests avec des personnes ayant une déficience de vision des couleurs. Les matrices sont des constantes fixes dans le gestionnaire, de sorte que la même entrée produit toujours le même hex simulé d'un runtime à l'autre.
Cas d’usage
Audits de design system et de jetons de marque
Prévisualisez comment les couleurs primaire, danger et graphique évoluent sous protanomalie modérée avant de figer des jetons hex dans une bibliothèque de composants.
Enseignement de la déficience de vision des couleurs
Montrez aux étudiants une comparaison déterministe côte à côte d'échantillons originaux et simulés en protanomalie, avec sévérité réglable du léger au protane complet.
Questions fréquentes
Qu'est-ce que la protanomalie et comment est-elle simulée ici ?
La protanomalie est une sensibilité réduite du cône L (rouge). Cet outil mappe RGB vers LMS, reconstruit L à partir de M et S comme dans une projection protane, mélange avec le LMS d'origine selon la sévérité, puis reconvertit en RGB.
Que fait le paramètre severity ?
Severity est un poids de mélange dans [0, 1]. 0 renvoie la couleur d'origine ; 1 applique la projection protanopie complète ; la valeur par défaut 0.6 modélise une protanomalie modérée typique.
Quels formats de couleur sont acceptés ?
Hex (#RGB ou #RRGGBB), CSS rgb()/rgba(), texte r,g,b simple, ou entiers r, g, b séparés 0–255.
S'agit-il d'un test médical ou diagnostique ?
Non. C'est une approximation d'ingénierie pour des aperçus de design et d'enseignement, pas une évaluation clinique de la vision des couleurs.
Quelle différence entre protanomalie et protanopie ?
Dans la protanomalie, les cônes sensibles au rouge fonctionnent encore mais répondent faiblement : les rouges paraissent plus sombres ou ternes et les paires rouge et vert se distinguent mal. Dans la protanopie, ce type de cône manque presque totalement ; l’intensité 1 s’en approche.
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/sim-protanomaly \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color":"#e74c3c","hex":"valor-ejemplo"}'const res = await fetch("https://api.kit.forhosting.com/color/sim-protanomaly", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color": "#e74c3c",
"hex": "valor-ejemplo"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/sim-protanomaly",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color": "#e74c3c",
"hex": "valor-ejemplo"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/sim-protanomaly", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color":"#e74c3c","hex":"valor-ejemplo"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color":"#e74c3c","hex":"valor-ejemplo"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/sim-protanomaly", 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": "#e74c3c",
"hex": "valor-ejemplo"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.sim_protanomaly",
"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
Contrat d'entrée, forme de la réponse et comportement d'erreur
Fournissez la couleur sous forme de chaîne hex telle que #e74c3c ou #e74, de CSS rgb(r,g,b), de texte r,g,b simple, ou de champs entiers séparés r, g et b de zéro à deux cent cinquante-cinq. Les canaux sont arrondis en entiers de zéro à deux cent cinquante-cinq après clamp afin que les clients puissent peindre des échantillons sans nouvelle mise à l'échelle. Exemple : un rouge vif proche de #e74c3c à la sévérité par défaut se décale vers une teinte plus terne et moins dominée par le rouge qui conserve encore une différence de grande longueur d'onde par rapport à la protanopie complète à sévérité un. Envoyez en POST un corps JSON avec une couleur source et une sévérité optionnelle. Les alias hex, value, text, input et code sont acceptés pour la forme chaîne ; red, green et blue aliasent les champs de canal. La sévérité vaut zéro virgule six par défaut si elle est omise et doit être un nombre fini entre zéro et un inclus lorsqu'elle est présente ; les alias amount, strength et severity sont acceptés. Couleur entièrement absente, chaînes vides, déchets non hex, canaux hors de zéro à deux cent cinquante-cinq, canaux fractionnaires et sévérité hors de l'intervalle unitaire échouent avec invalid_input et un message qui nomme le problème. Ces échecs de validation ne sont pas facturés. En cas de succès le corps inclut input_hex et input_rgb de la source résolue, la sévérité numérique utilisée, simulated_hex et simulated_rgb de la couleur filtrée, les canaux individuels simulated_r, simulated_g et simulated_b, une chaîne css rgb(), method protanomaly_partial_lms, deficiency protanomaly, une courte chaîne de formule décrivant le mélange LMS et un message lisible.
Où un simulateur de couleur protanomalie apporte de la valeur
Les plateformes éducatives qui enseignent la déficience de vision des couleurs peuvent montrer côte à côte des échantillons normaux et simulés sans intégrer de lourds filtres d'image. Une validation échouée ne consomme pas de solde. Associez les résultats à des contrôles de contraste sur l'original et le simulé pour des flux orientés WCAG ; ce point de terminaison ne transforme qu'un échantillon de couleur et ne note ni ratios de contraste ni régions d'image. Les relecteurs d'accessibilité peuvent traiter par lots des jetons de marque et des séries de graphiques via l'API et signaler les paires qui s'effondrent sous sensibilité rouge réduite avant la mise en production. Comme l'implémentation est pure parse de niveau A, chaque appel réussi coûte le prix de base publié $0.002 sans jetons de modèle ni réseau sortant.
Cas d'intégration
CI d'accessibilité pour les palettes
Filtrez par lots le JSON de palette dans les pipelines et faites échouer les builds lorsque des états critiques deviennent trop semblables après la transformée protane partielle.
Questions techniques
Combien coûte le simulateur de couleur protanomalie ?
L'outil navigateur est gratuit. Les requêtes API utilisent le solde KIT prépayé à $0.002 par appel réussi ; une entrée invalide n'est pas facturée.