XYZ-zu-xyY-Konverter
Der XYZ-zu-xyY-Konverter wandelt drei CIE-Normfarbwerte in zwei Farbartkoordinaten und einen getrennten Leuchtdichtewert um.
Im Browser ausführen – kostenlos
So können Sie Farben unabhängig von ihrer Helligkeit vergleichen und zugleich die ursprüngliche Y-Komponente für leuchtdichteabhängige Aufgaben erhalten. Geben Sie nicht negative X-, Y- und Z-Werte auf einer einheitlichen Skala ein. Der Konverter prüft die Eingaben, weist die undefinierte Farbart von Schwarz zurück und liefert anhand der CIE-Standardgleichungen stabile Zahlenwerte.
Verstehen, was sich zwischen XYZ und xyY ändert
CIE XYZ beschreibt einen Reiz mit drei Normfarbwerten, vermischt dabei jedoch deren Größenordnung mit ihren Verhältnissen. Die xyY-Darstellung trennt diese Aspekte. Die Kleinbuchstaben x und y kennzeichnen die Farbart, also vereinfacht gesagt die Farbe ohne ihre Gesamtintensität. Das große Y bewahrt die ursprüngliche, auf die Leuchtdichte bezogene Normfarbwertkomponente. Diese Trennung hilft Ihnen, Farben in ein CIE-1931-Farbartdiagramm einzutragen, Messungen bei unterschiedlichen Helligkeiten zu vergleichen oder die Leuchtdichte zusammen mit einem kompakten Koordinatenpaar zu speichern. Die Umrechnung führt weder eine Weißpunktanpassung noch eine Gammakurve, RGB-Matrix oder wahrnehmungsbezogene Korrektur aus. Sie normiert ausschließlich die eingegebenen XYZ-Werte. Beobachter, Lichtart, Messbedingungen und XYZ-Skalierung bleiben daher Aufgabe des umgebenden farbmetrischen Ablaufs. Wenn zwei XYZ-Tripel unter verschiedenen Referenzbedingungen entstanden sind, macht ihre Umrechnung in xyY diese Bedingungen nicht gleichwertig. Verwenden Sie Werte aus demselben vorgesehenen farbmetrischen Kontext und deuten Sie die Ergebnisse innerhalb dieses Kontexts.
So arbeitet die deterministische Berechnung
Zunächst prüft der Konverter, ob X, Y und Z endliche, nicht negative Zahlen sind. Anschließend bildet er die Summe X + Y + Z. Das kleine x ist X geteilt durch diese Summe, das kleine y ist Y geteilt durch denselben Nenner. Das große Y wird ohne Normierung aus der Eingabe übernommen und behält damit seine leuchtdichtebezogene Größenordnung und ursprüngliche Skala. Da beide Farbartkoordinaten denselben Nenner verwenden, sind x und y skalenunabhängig: Werden alle drei XYZ-Eingaben mit demselben positiven Faktor multipliziert, bleiben x und y unverändert, während Y mit diesem Faktor wächst. Die Ergebnisse werden mit stabiler signifikanter Genauigkeit gerundet, damit wiederholte Ausführungen übereinstimmende JSON-Werte erzeugen. Netzwerk, Zufall, Uhrzeit, Nachschlagetabelle oder ein umgebungsspezifisches Farbprofil spielen keine Rolle. Das Tripel X = 0, Y = 0, Z = 0 wird abgewiesen, weil sein Nenner null ist und ein vollkommen dunkler Reiz keine definierte Farbart besitzt. Auch eine Summe außerhalb des endlichen Zahlenbereichs wird zurückgewiesen.
Eingaben vorbereiten und Ergebnisse sicher deuten
Verwenden Sie für alle drei Eingaben eine einheitliche Skala. XYZ wird häufig mit einem Referenzweiß nahe Y = 100 angegeben; normierte Werte nahe Y = 1 sind jedoch ebenso gültig. Dieser Konverter setzt keine der beiden Konventionen voraus. Das ausgegebene große Y bleibt auf Ihrer Eingabeskala. Die Kleinbuchstaben x und y sind Verhältnisse und daher einheitenlos. Bei gültigen, nicht negativen XYZ-Werten liegt jede Koordinate zwischen null und eins, und x + y ist höchstens eins. Falls ein nachfolgender Rechenschritt die implizite dritte Koordinate benötigt, gilt z = 1 - x - y. Verwechseln Sie das kleine y nicht mit dem großen Y: y ist eine normierte Farbartkoordinate, Y dagegen der ursprüngliche leuchtdichtebezogene Normfarbwert. Beachten Sie außerdem, dass xyY nicht wahrnehmungsgleichförmig ist. Gleiche geometrische Abstände in einem xy-Diagramm wirken deshalb nicht zwingend gleich verschieden. Nutzen Sie die Umrechnung für normgerechten Datenaustausch, Diagramme, Messtechnik oder Zwischenschritte. Für wahrnehmungsbezogene Farbabstände wechseln Sie nach der nötigen Weißpunkt- und Adaptationsbehandlung in einen geeigneten Raum wie CIELAB.
Anwendungsfälle
Eine gemessene Farbe eintragen
Wandeln Sie die XYZ-Ausgabe eines Spektralfotometers in x- und y-Koordinaten für ein CIE-1931-Diagramm um und bewahren Sie die Leuchtdichte.
Farbart bei mehreren Helligkeiten vergleichen
Normieren Sie proportional skalierte XYZ-Messungen, um deren Farbartkoordinaten getrennt von Y zu vergleichen.
Farbmessdaten vorbereiten
Überführen Sie XYZ-Datensätze in die xyY-Darstellung, die Beleuchtungs-, Anzeige-, Bild- oder Kalibriersoftware erwartet.
Häufige Fragen
Was kostet die Umrechnung?
Der API-Preis beträgt $0.002 pro Anfrage. Die Ausführung im Browser ist kostenlos.
Welche XYZ-Skala sollte ich verwenden?
Jede einheitliche Skala ist gültig. Nutzen Sie dieselbe für X, Y und Z; das große Y der Ausgabe behält diese Skala.
Warum wird ein ausschließlich aus Nullen bestehendes XYZ-Tripel abgewiesen?
Die Formeln teilen durch X + Y + Z. Bei einem vollständig dunklen Reiz ist diese Summe null und die Farbart mathematisch undefiniert.
Führt der Konverter eine chromatische Adaption aus?
Nein. Er normiert XYZ lediglich zu xy-Koordinaten und bewahrt Y; Weißpunkte und Beobachtungsbedingungen verändert er nicht.
Warum unterscheiden sich kleines y und großes Y?
Das kleine y ist ein einheitenloses Farbartverhältnis. Das große Y ist die ursprüngliche, leuchtdichtebezogene XYZ-Komponente.
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/xyz-xyy \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x_value":41.24,"y_value":21.26,"z_value":1.93}'const res = await fetch("https://api.kit.forhosting.com/color/xyz-xyy", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x_value": 41.24,
"y_value": 21.26,
"z_value": 1.93
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/xyz-xyy",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x_value": 41.24,
"y_value": 21.26,
"z_value": 1.93
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/xyz-xyy", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x_value":41.24,"y_value":21.26,"z_value":1.93}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x_value":41.24,"y_value":21.26,"z_value":1.93}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/xyz-xyy", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"x_value": 41.24,
"y_value": 21.26,
"z_value": 1.93
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.xyz_xyy",
"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. |