Simulatore di protanopia
Il simulatore di protanopia mostra come cambia un colore sRGB opaco per una persona priva della risposta funzionale dei coni sensibili alle lunghezze d’onda maggiori, condizione spesso definita cecità al rosso.
Esegui gratis nel browser
Inserisca un valore esadecimale o canali RGB interi per ricevere origine normalizzata e risultato simulato in entrambi i formati. Il calcolo linearizza sRGB, applica una matrice fissa di proiezione Brettel-Vienot-Mollon, limita il risultato alla gamma visualizzabile e lo ricodifica in sRGB a otto bit. È una simulazione ripetibile per progettazione e documentazione, non una valutazione medica.
Esamini un colore specifico dell’interfaccia
Usi l’esatto valore sRGB presente nel sistema di design, nel foglio di stile, nel grafico o nella risorsa esportata. Può fornire un esadecimale di tre o sei cifre, un’espressione CSS rgb() oppure tre canali interi separati da virgole. La risposta comprende il colore originale normalizzato e quello simulato in esadecimale e RGB, pronti per note, test o strumenti di confronto. Consideri il campione trasformato un indizio visivo, non un giudizio di accessibilità. L’usabilità dipende anche da contrasto, dimensioni, contesto, etichette, motivi e stati interattivi. Un avviso rosso e una conferma verde devono quindi distinguersi anche mediante testo o icone. Verifichi tutti i token semantici con lo stesso metodo: combinare formule diverse può creare differenze dovute agli strumenti anziché ai colori.
Comprenda il processo cromatico deterministico
Il calcolo convalida e normalizza anzitutto il colore in tre canali sRGB a otto bit. Poiché tali valori sono codificati con gamma, vengono convertiti in luce lineare prima della trasformazione. La terna lineare viene poi moltiplicata per una matrice fissa tre per tre collegata alla simulazione dicromatica di Brettel, Vienot e Mollon. L’operazione può produrre canali fuori gamma, soprattutto con colori saturi, perciò ogni valore viene limitato tra zero e uno. Si applica quindi la codifica sRGB standard, si arrotonda all’intero più vicino e si formatta il risultato. Non intervengono rete, casualità, orologio, profilo personale o impostazioni nascoste. Lo stesso input valido genera sempre lo stesso JSON, caratteristica adatta ai test di regressione. Spazi cromatici, matrici o criteri di mappatura diversi possono dare risultati differenti e vanno dichiarati come metodi distinti.
Interpreti il risultato responsabilmente
Usi la simulazione come uno degli elementi di una verifica più ampia. Può mostrare che serie rosse e verdi diventano simili, che un pulsante distruttivo perde risalto o che gli stati dipendono troppo dalla tonalità. In tal caso migliori l’interfaccia originale aggiungendo etichette, icone, forme, motivi, bordi o separazione spaziale e verifichi il contrasto secondo la norma pertinente. Controlli anche gli stati di passaggio, focus, selezione, errore, successo e disabilitazione. Il modello non rappresenta variazioni individuali, schermi, illuminazione ambientale o ogni contesto visivo; non diagnostica la protanopia, non misura l’acutezza e non certifica conformità. Per prodotti importanti resta utile una valutazione umana. Nei flussi automatici conservi colore originale, risultato, metodo e decisione, affinché il campione simulato non venga scambiato per un token ufficiale del marchio.
Casi d'uso
Rivedere i token di design
Trasformi colori di avviso, successo, accento e grafici con un metodo stabile prima del rilascio del sistema.
Controllare le visualizzazioni
Confronti le serie simulate e aggiunga etichette, motivi o indicatori quando la tonalità non le distingue più.
Creare test di regressione
Conservi valori RGB simulati deterministici per sottoporre le future modifiche della palette a una verifica mirata.
Domande frequenti
Quanto costa una simulazione?
Una richiesta API costa $0.002. Ogni chiamata elabora un colore come singolo elemento.
Quali input sono accettati?
Usi #RGB, #RRGGBB, rgb(r, g, b) o tre canali interi separati da virgole, tutti compresi tra 0 e 255.
Perché sRGB viene prima linearizzato?
La matrice descrive una trasformazione in luce lineare. Applicarla direttamente ai valori gamma altererebbe il calcolo.
Il risultato certifica l’accessibilità?
No. Simula una trasformazione cromatica; l’accessibilità dipende anche da contrasto, contesto, segnali ridondanti e stati.
È un esame medico?
No. Non diagnostica la protanopia né prevede la percezione individuale; è uno strumento deterministico per design e ingegneria.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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)Esempio di richiesta
{
"color": "#e63946"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.sim_protanopia",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |