Convertidor XYZ a hex
Introduzca X, Y y Z y obtenga el color de pantalla como código hexadecimal: 0, 0 y 0 dan el negro puro, #000000. Los valores que una pantalla no puede mostrar se llevan al color visible más cercano en lugar de fallar. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- X
- 0
- Y
- 0
- Z
- 0
- Resistencia (Ω)
- 0
- G
- 0
- B
- 0
- Hex
- #000000
Este convertidor de XYZ a hex acepta tres números triestímulo CIE 1931 —X, Y y Z— y devuelve un color hexadecimal sRGB de seis dígitos, determinista, bajo el punto blanco D65 usado en la web. El motor multiplica por la inversa de la matriz estándar sRGB-a-XYZ de D65, recorta cualquier canal lineal fuera del cubo unitario (los estímulos fuera de gama se proyectan al borde mostrable más cercano), aplica la codificación gamma IEC 61966-2-1, empaqueta canales 0–255 en hex minúsculas y nunca llama a la red, muestrea aleatoriedad ni lee el reloj.
Qué significa la conversión de CIE XYZ a hex y qué contiene la respuesta
CIE XYZ es un espacio triestímulo independiente del dispositivo en el que Y sigue la luminancia relativa y X y Z transportan el resto del estímulo espectral. La web y la mayoría de las pantallas de consumo hablan sRGB: tres canales de ocho bits con gamma, empaquetados como un almohadilla y seis dígitos hexadecimales. Unir esos mundos exige un iluminante y unas primarias fijos —aquí el iluminante D65 y las primarias sRGB codificadas en IEC 61966-2-1.
El XYZ relativo es la convención habitual en la web: el blanco difuso se sitúa cerca de Xn igual a 0.95047, Yn igual a 1.0, Zn igual a 1.08883, y el negro puro es el origen. Esta calculadora multiplica sus X, Y y Z por la inversa de la matriz sRGB de D65 para obtener luz roja, verde y azul lineal.
Cualquier canal lineal por debajo de cero o por encima de uno se recorta al intervalo unitario, de modo que los espectros fuera de gama sigan produciendo un color de pantalla definido en lugar de bytes negativos o NaN. La codificación gamma mapea luego la luz lineal a la curva sRGB no lineal; los canales se escalan por doscientos cincuenta y cinco, se redondean a enteros y los seis nibbles forman #RRGGBB.
No hay un camino silencioso de NaN a negro ni un punto blanco alternativo en esta página: si necesita Adobe RGB, ProPhoto o empaquetado Lab, use una herramienta dedicada.
Dónde encaja un convertidor de XYZ a hex en diseño, ciencia y software
Los laboratorios de calibración de pantallas convierten lecturas XYZ de espectrofotómetro en hex sRGB para comprobaciones visuales rápidas frente a muestras de marca y maquetas de interfaz. Los pipelines de gestión del color que ya almacenan XYZ intermedio bajo D65 necesitan un último tramo hasta tokens CSS sin meter un motor ICC completo en una función serverless.
Los equipos de accesibilidad y de sistemas de diseño documentan XYZ medidos o calculados para rojos y neutros de marca, y publican el hex sRGB recortado que se envía al producto para que ingeniería y marketing compartan una sola cadena. Los estudiantes encuentran este mapeo en cursos de gráficos por computadora y ciencia del color tras aprender XYZ y antes de implementar gamma y empaquetado hex; un oráculo determinista les permite comprobar tareas sin calculadoras de escritorio opacas.
Combínelo con herramientas de RGB a Lab o de hex a RGB cuando necesite el sentido inverso o un intermedio perceptual, y con otros convertidores gratuitos deterministas al montar un pequeño laboratorio de higiene del color.
Qué puede hacer con ella
Notas de laboratorio y calibración de pantallas
Convierta CIE XYZ medido o calculado bajo D65 en #RRGGBB de CSS para comprobaciones visuales, tokens de marca e informes de calibración.
Tareas y demostraciones didácticas
Compruebe el trabajo de XYZ a sRGB de los estudiantes y demuestre en vivo el recorte de gama sin aplicaciones de calculadora opacas.
Preguntas frecuentes
¿Cuánto cuesta el convertidor de XYZ a hex?
Es gratis en su navegador, en esta página.
¿Qué punto blanco y qué primarias usa?
Iluminante D65 con las primarias sRGB estándar (IEC 61966-2-1).
¿Qué ocurre si XYZ está fuera de la gama sRGB?
Los canales RGB lineales se recortan a [0, 1] antes de la codificación gamma. La respuesta pone clamped en true cuando se recortó algún canal, y aun así devuelve un hex de seis dígitos válido.
¿Qué valores XYZ dan el blanco?
En la escala relativa habitual, el blanco difuso está cerca de X 0,95047, Y 1,0 y Z 1,08883 con D65. Valores próximos a esos devuelven un código casi blanco, y 0, 0 y 0 devuelve el negro puro.
¿El código hexadecimal sale en mayúsculas o en minúsculas?
El resultado principal es un código de seis dígitos en minúsculas con almohadilla, como #000000, listo para páginas web. También recibe una copia en mayúsculas y otra sin almohadilla, para pegar la que su programa espere.
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/xyz-hex \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x":0.4124564,"y":0.2126729,"z":0.0193339}'const res = await fetch("https://api.kit.forhosting.com/color/xyz-hex", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x": 0.4124564,
"y": 0.2126729,
"z": 0.0193339
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/xyz-hex",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x": 0.4124564,
"y": 0.2126729,
"z": 0.0193339
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/xyz-hex", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x":0.4124564,"y":0.2126729,"z":0.0193339}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x":0.4124564,"y":0.2126729,"z":0.0193339}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/xyz-hex", 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
{
"x": 0.4124564,
"y": 0.2126729,
"z": 0.0193339
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.xyz_hex",
"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
Los componentes ausentes o no finitos fallan con invalid_input en lugar de inventar un color.
Qué significa la conversión de CIE XYZ a hex y qué contiene la respuesta
La carga útil de éxito repite los x, y y z validados (redondeados para un JSON estable), los canales enteros r, g y b, hex con almohadilla inicial, hex_no_hash sin ella, uppercase para hojas de estilo que prefieren A–F, una cadena de función rgb(), un booleano clamped que es verdadero cuando algún canal tocó un borde de gama, white_point fijado a D65, method xyz_to_hex y un breve recordatorio de fórmula. El motor construye un hex de seis dígitos para tres números triestímulo finitos o rechaza la solicitud con invalid_input.
Cómo se leen, validan y convierten de forma reproducible X, Y y Z
No hay comprobación de rango absoluto sobre X, Y o Z en sí: los espectros medidos pueden producir valores fuera del cubo sRGB, y el contrato es recortar el RGB lineal derivado en lugar de rechazar la medida. Tras la validación, la conversión es solo aritmética en forma cerrada: tres multiplicaciones-sumas por canal para la matriz inversa, tres recortes, tres ramas gamma, tres escalas y redondeos, y empaquetado de nibbles con un alfabeto de dígitos fijo. El negro puro XYZ cero se mapea a #000000 con clamped false; el blanco D65 a #ffffff; un estímulo de rojo puro cerca de la primaria roja sRGB a #ff0000. Los pequeños desbordes de coma flotante justo fuera de cero o uno se recortan como cualquier otra muestra fuera de gama, de modo que los goldens se mantengan deterministas entre runtimes. Los campos preferidos son x, y y z en minúsculas, pero se aceptan los alias en mayúsculas X, Y y Z para que registros de instrumentos, hojas de cálculo y formularios tipados reutilicen nombres de columna sin renombrar. Se recortan los espacios exteriores de las cadenas numéricas; funcionan tanto números JSON como cadenas numéricas. Las cadenas vacías tras el recorte, los campos ausentes, objetos, matrices, Infinity y NaN fallan con un mensaje que nombra el campo y exige un número triestímulo CIE XYZ finito —esos fallos usan invalid_input y no se facturan. Combine la ejecución gratuita en el navegador de esta página con la API de pago cuando necesite el mismo resultado matemático dentro de un pipeline automatizado.
Dónde encaja un convertidor de XYZ a hex en diseño, ciencia y software
En esta página el trabajo se ejecuta por completo en su navegador; a través de la API cada conversión exitosa cuesta $0.002, la validación fallida no se cobra y nada se almacena tras devolver la respuesta. Esa separación —exploración interactiva gratuita y una API de pago idéntica— coincide con el resto del catálogo tier A del KIT y le permite pasar de un cuaderno de laboratorio o una revisión de diseño a un pipeline automatizado sin cambiar el resultado matemático.
Casos de integración
Fixtures deterministas de tokens de diseño
Genere cadenas hex reproducibles a partir de columnas XYZ para pruebas unitarias, goldens de integración continua y pipelines de sistemas de diseño.
Preguntas técnicas
¿Qué campos son obligatorios?
Números finitos x, y y z (alias X, Y, Z). Los campos ausentes, las cadenas vacías, Infinity y NaN se rechazan con invalid_input.
¿El hex va en mayúsculas o en minúsculas?
El campo hex principal va en minúsculas con un # inicial (por ejemplo #ff0000). hex_no_hash omite el almohadilla; uppercase devuelve la forma #RRGGBB con A–F.