Simular protanomalía en un color
Previsualice un color tal como lo ve alguien con sensibilidad reducida al rojo: el rojo vivo #e74c3c pasa a #416f3e con la intensidad por defecto de 0.6. Puede ir de 0, sin cambios, a 1, casi protanopia, antes de fijar colores de marca o de gráficos. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
La protanomalía es una forma habitual de tricromacia anómala en la que los conos de longitud de onda larga (L) de la retina presentan sensibilidad reducida a la luz roja. Diseñadores, auditores de accesibilidad y docentes suelen necesitar una vista previa rápida y determinista de cómo se vería un color de marca, una serie de gráfico o un estado de interfaz cuando la discriminación del rojo se debilita: no una protanopía completa, sino una mezcla parcial entre la visión normal y una proyección protánica. Esta herramienta para simular protanomalía en un color acepta un color hex o RGB más una severidad opcional de cero a uno, convierte el color al espacio de conos LMS, aplica parcialmente una transformada protánica al estilo Viénot que reconstruye el canal L a partir de M y S, vuelve a RGB y devuelve el hex simulado, los canales y la cadena CSS. Severidad cero deja el color sin cambios; severidad uno aproxima protanopía completa; el valor predeterminado de cero coma seis modela una protanomalía moderada típica.
Qué significa simular protanomalía y cómo funciona la transformada protánica parcial
La visión del color humana normal es tricromática: tres tipos de conos (L, M y S) muestrean el espectro en longitudes de onda largas, medias y cortas. En la protanomalía el fotopigmento del cono L está desplazado o es menos eficaz, de modo que los rojos se ven más oscuros o menos saturados y los pares rojo–verde son más difíciles de separar que en visión normal, aunque siguen funcionando tres clases de conos, a diferencia de la protanopía, donde el canal L falta de forma efectiva.
Un modelo de ingeniería práctico no necesita un espectro fisiológico completo: mapea el RGB de pantalla a LMS, sustituye la coordenada L por una combinación lineal de M y S que aproxima el plano protanópico (clásicamente L igual a dos coma cero dos tres cuatro cuatro veces M menos dos coma cinco dos cinco ocho uno veces S según matrices al estilo Viénot, Brettel y Mollon) y luego devuelve LMS a RGB. La simulación dicromática completa usa solo esa sustitución.
La protanomalía se modela mezclando el LMS original con el LMS protánico mediante un peso de severidad s en el intervalo unitario: L prima igual a (uno menos s) por L más s por L protánico, mientras M y S siguen la trayectoria original antes de la transformada inversa. Esa aplicación parcial es determinista, barata y suficiente para vistas previas de interfaz, auditorías de paleta y demos didácticas. No es una herramienta de diagnóstico clínico y no sustituye las pruebas con personas con deficiencia de visión del color.
Las matrices son constantes fijas en el manejador, así que la misma entrada siempre produce el mismo hex simulado entre entornos de ejecución.
Qué puede hacer con ella
Auditorías de sistema de diseño y tokens de marca
Previsualice cómo cambian los colores primario, de peligro y de gráfico bajo protanomalía moderada antes de fijar tokens hex en una biblioteca de componentes.
Enseñanza de la deficiencia de visión del color
Muestre a los alumnos una comparación determinista lado a lado de muestras originales frente a protanomalía simulada, con severidad ajustable de leve a protánica completa.
Preguntas frecuentes
¿Qué es la protanomalía y cómo se simula aquí?
La protanomalía es sensibilidad reducida del cono L (rojo). Esta herramienta mapea RGB a LMS, reconstruye L a partir de M y S como en una proyección protánica, mezcla con el LMS original según la severidad y vuelve a RGB.
¿Qué hace el parámetro severity?
Severity es un peso de mezcla en [0, 1]. 0 devuelve el color original; 1 aplica la proyección de protanopía completa; el valor predeterminado 0.6 modela una protanomalía moderada típica.
¿Qué formatos de color se aceptan?
Hex (#RGB o #RRGGBB), CSS rgb()/rgba(), texto r,g,b simple, o enteros r, g, b separados 0–255.
¿Es una prueba médica o de diagnóstico?
No. Es una aproximación de ingeniería para vistas previas de diseño y educación, no una evaluación clínica de la visión del color.
¿En qué se diferencia la protanomalía de la protanopia?
En la protanomalía los conos sensibles al rojo siguen funcionando, pero responden débilmente: los rojos se ven más oscuros o apagados y cuesta separar pares rojo y verde. En la protanopia ese tipo de cono prácticamente falta; la intensidad 1 se acerca a ella.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"color": "#e74c3c",
"hex": "valor-ejemplo"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.sim_protanomaly",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Contrato de entrada, forma de la respuesta y comportamiento de error
Indique el color como cadena hex como #e74c3c o #e74, como CSS rgb(r,g,b), como texto r,g,b simple, o como campos enteros separados r, g y b de cero a doscientos cincuenta y cinco. Esos fallos de validación no se facturan. Los canales se redondean a enteros de cero a doscientos cincuenta y cinco tras el clamp para que los clientes puedan pintar muestras sin escalar más. Ejemplo: un rojo vivo cercano a #e74c3c con la severidad predeterminada se desplaza hacia un tono más apagado y menos dominado por el rojo que aún conserva cierta diferencia de longitud de onda larga frente a la protanopía completa en severidad uno. Envíe por POST un cuerpo JSON con un color de origen y una severidad opcional. Se aceptan los alias hex, value, text, input y code para la forma de cadena; red, green y blue son alias de los campos de canal. La severidad por defecto es cero coma seis si se omite y debe ser un número finito entre cero y uno inclusive cuando se indica; se aceptan los alias amount, strength y severity. Color ausente por completo, cadenas vacías, basura no hex, canales fuera de cero a doscientos cincuenta y cinco, canales fraccionarios y severidad fuera del intervalo unitario fallan con invalid_input y un mensaje que nombra el problema. En caso de éxito el cuerpo incluye input_hex e input_rgb del origen resuelto, la severidad numérica usada, simulated_hex y simulated_rgb del color filtrado, los canales individuales simulated_r, simulated_g y simulated_b, una cadena css rgb(), method protanomaly_partial_lms, deficiency protanomaly, una cadena de fórmula breve que describe la mezcla LMS y un mensaje legible.
Dónde aporta valor un simulador de color protanomalía
Las plataformas educativas que enseñan deficiencia de visión del color pueden mostrar muestras normales frente a simuladas sin incrustar filtros de imagen pesados. La validación fallida no consume saldo. Los revisores de accesibilidad pueden procesar por lotes tokens de marca y series de gráficos mediante la API y marcar pares que colapsan bajo sensibilidad roja reducida antes del envío. Como la implementación es parse puro de nivel A, cada llamada exitosa cuesta el precio base publicado $0.002 sin tokens de modelo ni red saliente. Combine los resultados con comprobaciones de contraste sobre el color original y el simulado cuando necesite flujos orientados a WCAG; este endpoint solo transforma una muestra de color y no puntúa ratios de contraste ni regiones de imagen.
Casos de integración
CI de accesibilidad para paletas
Filtre por lotes JSON de paletas en pipelines y haga fallar las builds cuando estados críticos se vuelvan demasiado similares tras la transformada protánica parcial.
Preguntas técnicas
¿Cuánto cuesta el simulador de color protanomalía?
La herramienta del navegador es gratuita. Las solicitudes API usan saldo KIT prepago a $0.002 por llamada exitosa; la entrada inválida no se factura.