Convertidor RGB a XYZ
Obtenga los valores CIE 1931 XYZ de un color sRGB: el naranja 255, 128, 0 da X 48.96429558, Y 36.70460115 y Z 4.50627447 en la escala de 0 a 100. Un punto de partida sólido para pasar a Lab y comparar perfiles. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Resistencia (Ω)
- 255
- G
- 128
- B
- 0
- X
- 48,96429558
- Y
- 36,70460115
- Z
- 4,50627447
- Punto blanco
- D65
Este convertidor de RGB a XYZ transforma los valores de los canales rojo, verde y azul de sRGB en coordenadas triestímulo CIE 1931 XYZ. Valida cada canal, elimina la curva de transferencia no lineal de sRGB y aplica la matriz de conversión D65 estándar para el observador de 2 grados. Los valores X, Y y Z se entregan en la escala habitual de 0–100, listos para cálculos colorimétricos, comparaciones de perfiles y conversiones a espacios como CIE L*a*b*.
Introduzca un color sRGB válido
Indique los canales rojo, verde y azul como enteros de 0 a 255. Son los valores sRGB habituales que se emplean en los colores rgb() de CSS y en la mayoría de los datos de imagen destinados a pantallas. Los tres campos son obligatorios porque un resultado XYZ describe la contribución luminosa conjunta del color completo.
El convertidor rechaza canales ausentes, decimales, valores no numéricos y números fuera del intervalo permitido, en lugar de recortarlos o adivinarlos sin aviso. Este comportamiento estricto resulta útil en procesos automatizados: los datos de origen inválidos generan un error de entrada claro, no una coordenada verosímil pero incorrecta. Por ejemplo, el rojo puro se introduce como r 255, g 0 y b 0, mientras que un gris medio neutro utiliza el mismo número en los tres canales.
La entrada se interpreta específicamente como sRGB estándar. Los valores de Adobe RGB, Display P3, ProPhoto RGB, RGB nativo de una cámara o un perfil incrustado desconocido necesitan la matriz y la curva de transferencia propias de ese espacio y no deben enviarse como si fueran sRGB.
Comprenda la linealización gamma y la matriz
Los valores sRGB almacenados no son lineales: se codifican mediante una curva de transferencia diseñada para los sistemas de visualización y para aprovechar mejor la precisión visual. La multiplicación matricial debe operar con magnitudes de luz lineal, por lo que el convertidor primero divide cada canal entre 255 y aplica la función inversa de compansión de sRGB. Los valores bajos utilizan la rama lineal y los más altos, la rama de potencia 2.4 definida para sRGB.
Después, los componentes lineales rojo, verde y azul se multiplican por la matriz estándar de 3 por 3 que convierte sRGB en XYZ. Esta matriz expresa los primarios sRGB con respecto al observador estándar CIE 1931 de 2 grados y al blanco de referencia D65. X representa de forma general un componente de estímulo ponderado hacia el rojo, Y coincide con la luminancia relativa y Z tiene una ponderación marcada hacia el azul, aunque ninguno debe entenderse como un simple canal RGB renombrado.
Separar la eliminación de gamma de la conversión matricial es esencial. Aplicar la matriz directamente a valores codificados de 0–255 produce coordenadas sistemáticamente erróneas, sobre todo en tonos medios y colores oscuros.
Interprete y utilice el resultado XYZ
La respuesta presenta X, Y y Z en una escala de 0–100 e incluye etiquetas explícitas de punto blanco, observador y escala, para que el código posterior no tenga que deducir la convención. Para el blanco de referencia sRGB, los valores aproximados son X 95.047, Y 100 y Z 108.883; por tanto, Z puede superar legítimamente 100 aunque la etiqueta indique 0–100. Esa denominación describe la normalización convencional en la que Y del blanco de referencia equivale a 100, no un límite estricto para cada componente.
XYZ se utiliza a menudo como espacio intermedio de conexión. Usted puede normalizar los valores y continuar hacia CIE L*a*b*, calcular coordenadas de cromaticidad, comparar puntos blancos o alimentar un flujo de gestión del color que espere expresamente datos XYZ D65. Al contrastar el resultado con otra calculadora o biblioteca, compruebe el perfil RGB, el observador, el blanco de referencia, la escala de salida, los coeficientes de la matriz y el redondeo.
Qué puede hacer con ella
Preparar un color sRGB para convertirlo a LAB
Utilice XYZ D65 como etapa de conexión antes de aplicar la transformación al blanco de referencia de CIE L*a*b*.
Comprobar una biblioteca de color
Compare la salida determinista de la matriz con muestras sRGB conocidas al desarrollar o probar código de procesamiento del color.
Calcular coordenadas colorimétricas
Convierta canales de color web en valores triestímulo para analizar luminancia, cromaticidad y perfiles.
Preguntas frecuentes
¿Cuánto cuesta la conversión?
El convertidor del navegador se ejecuta gratis en esta página.
¿Qué espacio de color RGB utiliza el convertidor?
Utiliza los primarios sRGB estándar y la curva de transferencia inversa de sRGB. No interpreta valores Adobe RGB, Display P3 ni RGB nativos de un dispositivo.
¿Qué punto blanco y observador se utilizan?
La matriz toma como referencia el punto blanco D65 y el observador estándar CIE 1931 de 2 grados.
¿Por qué Z puede ser mayor que 100?
La escala convencional normaliza Y del blanco de referencia a 100. Con D65, la coordenada Z de ese blanco ronda 108.883, por lo que un valor superior a 100 es válido.
¿Se aceptan canales RGB decimales o fuera de intervalo?
No. Cada canal debe ser un entero de 0 a 255.
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/rgb-xyz \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"r":255,"g":128,"b":0}'const res = await fetch("https://api.kit.forhosting.com/color/rgb-xyz", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"r": 255,
"g": 128,
"b": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/rgb-xyz",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"r": 255,
"g": 128,
"b": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/rgb-xyz", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"r":255,"g":128,"b":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"r":255,"g":128,"b":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/rgb-xyz", 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
{
"r": 255,
"g": 128,
"b": 0
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb_xyz",
"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.
Límites
min_channel | 0 |
max_channel | 255 |
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
El navegador y la API ejecutan el mismo cálculo determinista.
Interprete y utilice el resultado XYZ
Los resultados se redondean a ocho decimales para mantener un JSON estable y conservar más precisión de la que suele requerirse en interfaces e informes.