Simulador de protanopia
O simulador de protanopia mostra como uma cor sRGB opaca é transformada para uma pessoa sem resposta funcional dos cones sensíveis aos comprimentos de onda longos, condição muitas vezes chamada de cegueira ao vermelho.
Executar grátis
Informe um valor hexadecimal ou canais RGB inteiros e receba os valores de origem normalizados e simulados nos dois formatos. O cálculo lineariza sRGB, aplica uma matriz fixa de projeção de Brettel-Vienot-Mollon, limita o resultado à gama exibível e o codifica novamente em sRGB de oito bits. É uma simulação reproduzível para design e documentação, não uma avaliação médica.
Examine uma cor específica da interface
Use o valor sRGB exato empregado no seu sistema de design, folha de estilos, gráfico ou arquivo exportado. A entrada pode ser hexadecimal de três ou seis dígitos, uma expressão CSS rgb() ou três canais inteiros separados por vírgulas. A resposta inclui a cor de origem normalizada e o resultado simulado em hexadecimal e RGB, prontos para uma anotação de design, um teste ou uma ferramenta comparativa. Trate a amostra transformada como evidência visual, não como aprovação ou reprovação de acessibilidade. A experiência também depende de contraste, tamanho, contexto, rótulos, padrões e estados interativos. Portanto, um alerta vermelho e uma confirmação verde devem contar também com texto ou ícones. Avalie cada token semântico com o mesmo método, pois misturar fórmulas diferentes pode criar diferenças causadas pelas ferramentas, e não pelas próprias cores.
Entenda o processamento determinístico da cor
O cálculo primeiro valida e normaliza a cor em três canais sRGB de oito bits. Como esses valores são codificados com gama, eles são convertidos para luz linear antes da transformação. Em seguida, o trio linear é multiplicado por uma matriz fixa de três por três associada ao método de simulação dicromática de Brettel, Vienot e Mollon. A operação pode gerar canais fora do intervalo exibível, especialmente para cores muito saturadas; por isso cada valor é limitado entre zero e um. Depois, aplica-se a função padrão de codificação sRGB, arredonda-se para o inteiro mais próximo e formata-se o resultado. Não há rede, aleatoriedade, relógio, perfil pessoal nem configuração oculta. A mesma entrada válida sempre produz o mesmo JSON, o que favorece testes de regressão. Outros espaços de cor, matrizes ou critérios de mapeamento de gama podem gerar resultados diferentes e devem ser identificados como métodos distintos.
Interprete o resultado com responsabilidade
Use a simulação como uma perspectiva dentro de uma análise mais ampla. Ela pode mostrar que séries vermelhas e verdes ficam parecidas, que um botão destrutivo perde destaque ou que indicadores dependem demais da tonalidade. Nesse caso, melhore a interface original: acrescente rótulos, ícones, formas, padrões, bordas ou separação espacial e verifique o contraste conforme a norma aplicável. Analise também os estados de foco, seleção, erro, sucesso, desativação e ponteiro. O modelo não representa variações individuais, telas, iluminação ambiente nem todos os contextos de visão; tampouco diagnostica protanopia, mede acuidade visual ou certifica conformidade. Produtos relevantes ainda se beneficiam de avaliação humana. Em fluxos automatizados, registre a cor original, o resultado, o nome do método e a decisão tomada, evitando que uma amostra simulada seja confundida mais tarde com um token oficial da marca.
Casos de uso
Revisar tokens de design
Transforme cores de alerta, sucesso, destaque e gráficos com um método estável antes de lançar o sistema de design.
Verificar visualizações de dados
Compare séries simuladas e adicione rótulos, padrões ou marcadores quando a tonalidade deixar de separá-las.
Criar testes de regressão
Armazene valores RGB simulados e determinísticos para que futuras alterações de paleta recebam uma revisão focada.
Perguntas frequentes
Quanto custa uma simulação?
Uma solicitação de API custa US$ 0,002. Cada chamada processa uma cor como um item.
Quais entradas são aceitas?
Use #RGB, #RRGGBB, rgb(r, g, b) ou três canais inteiros separados por vírgulas, todos entre 0 e 255.
Por que sRGB é linearizado primeiro?
A matriz representa uma transformação em luz linear. Aplicá-la diretamente aos valores de tela com gama mudaria o cálculo.
O resultado certifica acessibilidade?
Não. Ele simula uma transformação de cor; acessibilidade também depende de contraste, contexto, pistas redundantes e estados.
Isto é um exame médico?
Não. A ferramenta não diagnostica protanopia nem prevê a percepção individual; é um auxílio determinístico para design e engenharia.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/color/sim-protanopia \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color":"#e63946"}'const res = await fetch("https://api.kit.forhosting.com/color/sim-protanopia", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color": "#e63946"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/sim-protanopia",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color": "#e63946"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/sim-protanopia", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color":"#e63946"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color":"#e63946"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/sim-protanopia", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"color": "#e63946"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.sim_protanopia",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |