Protanopie-Farbsimulator
Der Protanopie-Farbsimulator zeigt, wie eine deckende sRGB-Farbe für Menschen ohne funktionsfähige Reaktion der langwellenempfindlichen Zapfen verändert erscheint, was häufig als Rotblindheit bezeichnet wird.
Im Browser ausführen – kostenlos
Geben Sie einen Hexadezimalwert oder ganzzahlige RGB-Kanäle ein; Sie erhalten normalisierte Ausgangs- und simulierte Werte in beiden Formaten. Die Berechnung linearisiert sRGB, wendet eine feste Brettel-Vienot-Mollon-Projektionsmatrix an, begrenzt das Ergebnis auf den darstellbaren Farbraum und codiert es wieder als Acht-Bit-sRGB. Sie dient reproduzierbaren Designprüfungen und der Dokumentation, nicht der medizinischen Beurteilung.
Untersuchen Sie eine bestimmte Oberflächenfarbe
Verwenden Sie exakt den sRGB-Wert aus Ihrem Designsystem, Stylesheet, Diagramm oder exportierten Element. Zulässig sind drei- oder sechsstellige Hexadezimalfarben, CSS-Ausdrücke der Form rgb() und drei durch Kommas getrennte Ganzzahlkanäle. Die Antwort enthält die normalisierte Ausgangsfarbe und das Simulationsergebnis als Hexadezimal- und RGB-Wert und eignet sich damit für Designnotizen, Tests oder Vergleichswerkzeuge. Verstehen Sie das Ergebnis als visuellen Hinweis und nicht als Entscheidung über Barrierefreiheit. Nutzbarkeit hängt ebenso von Kontrast, Größe, Umgebung, Beschriftungen, Mustern und Interaktionszuständen ab. Eine rote Warnung und eine grüne Bestätigung sollten deshalb zusätzlich durch Text oder Symbole unterscheidbar sein. Prüfen Sie alle semantischen Tokens mit derselben Methode, denn gemischte Simulationsformeln können scheinbare Unterschiede erzeugen, die von den Werkzeugen statt von den Farben stammen.
Verstehen Sie die deterministische Farbberechnung
Zunächst wird die Eingabe geprüft und in drei Acht-Bit-sRGB-Kanäle normalisiert. Da diese Werte gammacodiert sind, werden sie vor der Transformation in lineares Licht überführt. Anschließend wird das lineare Tripel mit einer festen Drei-mal-drei-Matrix des dichromatischen Simulationsansatzes von Brettel, Vienot und Mollon multipliziert. Besonders bei stark gesättigten Farben können Werte außerhalb des darstellbaren Bereichs entstehen; daher wird jeder Kanal auf null bis eins begrenzt. Danach folgen die standardmäßige sRGB-Codierung, Rundung auf die nächste Ganzzahl und Formatierung. Netzwerk, Zufall, Uhrzeit, persönliches Profil und verborgene Anpassungen spielen keine Rolle. Dieselbe gültige Eingabe liefert stets dasselbe JSON und eignet sich daher für Regressionstests. Andere Farbräume, Matrizen oder Gamut-Verfahren können berechtigt abweichende Resultate liefern und sollten als eigene Methode dokumentiert werden.
Bewerten Sie das Ergebnis verantwortungsvoll
Nutzen Sie die Simulation als Teil einer umfassenderen Prüfung. Sie kann zeigen, dass rote und grüne Datenreihen zusammenfallen, eine destruktive Schaltfläche an Wirkung verliert oder Statusanzeigen zu stark vom Farbton abhängen. Verbessern Sie dann die ursprüngliche Oberfläche durch Beschriftungen, Symbole, Formen, Muster, Rahmen oder räumliche Trennung und prüfen Sie den Kontrast nach der einschlägigen Norm. Berücksichtigen Sie auch Hover-, Fokus-, Auswahl-, Fehler-, Erfolgs- und deaktivierte Zustände. Das Modell bildet weder individuelle Unterschiede noch Bildschirme, Umgebungslicht oder sämtliche Sehsituationen ab. Es diagnostiziert keine Protanopie, misst keine Sehschärfe und bescheinigt keine Konformität. Bei wichtigen Produkten bleibt eine Prüfung durch Menschen wertvoll. Speichern Sie in automatisierten Abläufen Ausgangsfarbe, Ergebnis, Methodenname und getroffene Entscheidung, damit eine simulierte Farbe später nicht mit einem offiziellen Markentoken verwechselt wird.
Anwendungsfälle
Design-Tokens überprüfen
Transformieren Sie Warn-, Erfolgs-, Akzent- und Diagrammfarben vor einer Veröffentlichung mit einer einheitlichen Methode.
Datenvisualisierungen prüfen
Vergleichen Sie simulierte Reihen und ergänzen Sie Beschriftungen, Muster oder Marker, wenn der Farbton nicht mehr trennt.
Regressionstests erstellen
Speichern Sie deterministische simulierte RGB-Werte, damit spätere Palettenänderungen gezielt geprüft werden.
Häufige Fragen
Was kostet eine Simulation?
Eine API-Anfrage kostet $0.002. Jeder Aufruf verarbeitet eine Farbe als ein Element.
Welche Eingaben sind zulässig?
Verwenden Sie #RGB, #RRGGBB, rgb(r, g, b) oder drei kommagetrennte Ganzzahlkanäle zwischen 0 und 255.
Warum wird sRGB zuerst linearisiert?
Die Matrix beschreibt eine Transformation in linearem Licht. Eine direkte Anwendung auf Gammawerte würde die Rechnung verändern.
Bestätigt das Ergebnis Barrierefreiheit?
Nein. Es simuliert eine Farbtransformation; Barrierefreiheit hängt auch von Kontrast, Kontext, redundanten Hinweisen und Zuständen ab.
Ist dies ein medizinischer Test?
Nein. Das Werkzeug diagnostiziert keine Protanopie und sagt keine individuelle Wahrnehmung voraus; es unterstützt Design und Technik.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem 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)Beispiel-Anfrage
{
"color": "#e63946"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.sim_protanopia",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |