Conversor XYZ para hex
Informe X, Y e Z e receba a cor de tela como código hexadecimal: 0, 0 e 0 dão o preto puro, #000000. Valores que uma tela não consegue mostrar vão para a cor exibível mais próxima em vez de falhar. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- X
- 0
- Y
- 0
- Z
- 0
- Resistência (Ω)
- 0
- G
- 0
- B
- 0
- Hex
- #000000
Este conversor de XYZ para hex aceita três números triestímulo CIE 1931 —X, Y e Z— e devolve uma cor hexadecimal sRGB de seis dígitos, determinística, sob o ponto branco D65 usado na web. O motor multiplica pela inversa da matriz padrão sRGB-para-XYZ de D65, clampea qualquer canal linear fora do cubo unitário (estímulos fora do gamut mapeiam para a borda exibível mais próxima), aplica a codificação gamma IEC 61966-2-1, empacota canais 0–255 em hex minúsculo e nunca chama a rede, amostra aleatoriedade nem lê o relógio.
O que significa a conversão de CIE XYZ para hex e o que a resposta contém
CIE XYZ é um espaço triestímulo independente de dispositivo em que Y acompanha a luminância relativa e X e Z carregam o restante do estímulo espectral. A web e a maioria dos monitores de consumo falam sRGB: três canais de oito bits com gamma, empacotados como um hash e seis dígitos hexadecimais. Unir esses mundos exige um iluminante e primárias fixos —aqui o iluminante D65 e as primárias sRGB codificadas em IEC 61966-2-1.
O XYZ relativo é a convenção usual na web: o branco difuso fica perto de Xn igual a 0.95047, Yn igual a 1.0, Zn igual a 1.08883, e o preto puro é a origem. Esta calculadora multiplica seus X, Y e Z pela inversa da matriz sRGB de D65 para obter luz vermelha, verde e azul linear.
Qualquer canal linear abaixo de zero ou acima de um é clampeado ao intervalo unitário, de modo que espectros fora do gamut ainda produzam uma cor de tela definida em vez de bytes negativos ou NaN. A codificação gamma mapeia então a luz linear para a curva sRGB não linear; os canais são escalados por duzentos e cinquenta e cinco, arredondados a inteiros, e os seis nibbles formam #RRGGBB.
Não há caminho silencioso de NaN para preto nem ponto branco alternativo nesta página: se você precisa de Adobe RGB, ProPhoto ou empacotamento Lab, use uma ferramenta dedicada.
Onde um conversor de XYZ para hex se encaixa em design, ciência e software
Laboratórios de calibração de displays convertem leituras XYZ de espectrofotômetro em hex sRGB para checagens visuais rápidas contra swatches de marca e mocks de UI. Pipelines de gerenciamento de cor que já armazenam XYZ intermediário sob D65 precisam de um último trecho até tokens CSS sem puxar um motor ICC completo para uma função serverless.
Equipes de acessibilidade e de design systems documentam XYZ medido ou calculado para vermelhos e neutros de marca e publicam o hex sRGB clampeado que vai para o produto, para que engenharia e marketing compartilhem uma única string. Estudantes encontram esse mapeamento em cursos de computação gráfica e ciência da cor depois de aprender XYZ e antes de implementar gamma e empacotamento hex; um oráculo determinístico permite conferir tarefas sem calculadoras de desktop opacas.
Combine com ferramentas de RGB para Lab ou hex para RGB quando precisar do sentido inverso ou de um intermediário perceptual, e com outros conversores gratuitos determinísticos ao montar um pequeno laboratório de higiene de cor.
Casos de uso
Notas de laboratório e calibração de displays
Transforme CIE XYZ medido ou calculado sob D65 em #RRGGBB de CSS para checagens visuais, tokens de marca e relatórios de calibração.
Tarefas e demos didáticas
Confira o trabalho de XYZ para sRGB dos alunos e demonstre ao vivo o clampeamento de gamut sem apps de calculadora opacos.
Perguntas frequentes
Qual ponto branco e quais primárias ele usa?
Iluminante D65 com as primárias sRGB padrão (IEC 61966-2-1).
O que acontece se XYZ estiver fora do gamut sRGB?
Os canais RGB lineares são clampeados para [0, 1] antes da codificação gamma. A resposta define clamped como true quando algum canal foi clampeado e ainda devolve um hex de seis dígitos válido.
Quais valores XYZ dão o branco?
Na escala relativa usual, o branco difuso fica perto de X 0,95047, Y 1,0 e Z 1,08883 com D65. Valores próximos a esses devolvem um código quase branco, e 0, 0 e 0 devolve o preto puro.
O código hexadecimal sai em maiúsculas ou minúsculas?
O resultado principal é um código de seis dígitos em minúsculas com cerquilha, como #000000, pronto para páginas web. Você também recebe uma cópia em maiúsculas e outra sem cerquilha, para colar a que seu programa espera.
Preciso informar os três valores?
Sim. X, Y e Z são obrigatórios e precisam ser números finitos; se faltar algum, a ferramenta avisa em vez de inventar uma cor. Não há limite fixo para cada valor, porque medições reais podem sair da faixa da tela.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"x": 0.4124564,
"y": 0.2126729,
"z": 0.0193339
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.xyz_hex",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Componentes ausentes ou não finitos falham com invalid_input em vez de inventar uma cor.
O que significa a conversão de CIE XYZ para hex e o que a resposta contém
O payload de sucesso ecoa os x, y e z validados (arredondados para JSON estável), os canais inteiros r, g e b, hex com hash inicial, hex_no_hash sem ele, uppercase para folhas de estilo que preferem A–F, uma string de função rgb(), um booleano clamped verdadeiro quando algum canal tocou uma borda de gamut, white_point definido como D65, method xyz_to_hex e um lembrete curto da fórmula. O motor constrói um hex de seis dígitos para três números triestímulo finitos ou rejeita a solicitação com invalid_input.
Como X, Y e Z são lidos, validados e convertidos de forma reproduzível
Não há checagem de faixa absoluta sobre X, Y ou Z em si: espectros medidos podem produzir valores fora do cubo sRGB, e o contrato é clampear o RGB linear derivado em vez de recusar a medição. Após a validação, a conversão é apenas aritmética em forma fechada: três multiplicações-somas por canal para a matriz inversa, três clamps, três ramos de gamma, três escalas e arredondamentos, e empacotamento de nibbles com um alfabeto de dígitos fixo. Preto puro XYZ zero mapeia para #000000 com clamped false; branco D65 para #ffffff; um estímulo de vermelho puro perto da primária vermelha sRGB para #ff0000. Pequenos overshoots de ponto flutuante logo fora de zero ou um são clampeados como qualquer outra amostra fora do gamut, para que os goldens permaneçam determinísticos entre runtimes. Os campos preferidos são x, y e z em minúsculas, mas os aliases maiúsculos X, Y e Z são aceitos para que logs de instrumentos, planilhas e formulários tipados reutilizem nomes de colunas sem renomear. Espaços externos em strings numéricas são removidos; números JSON e strings numéricas funcionam. Strings vazias após o trim, campos ausentes, objetos, arrays, Infinity e NaN falham com uma mensagem que nomeia o campo e exige um número triestímulo CIE XYZ finito —essas falhas usam invalid_input e não são cobradas. Combine a execução gratuita no navegador desta página com a API paga quando precisar do mesmo resultado matemático dentro de um pipeline automatizado.
Onde um conversor de XYZ para hex se encaixa em design, ciência e software
Nesta página o trabalho roda inteiramente no seu navegador; pela API cada conversão bem-sucedida custa US$ 0,002, validação falha não é cobrada e nada é armazenado após a resposta retornar. Essa divisão —exploração interativa gratuita e uma API paga idêntica— combina com o restante do catálogo tier A do KIT e permite ir de um caderno de laboratório ou revisão de design a um pipeline automatizado sem mudar o resultado matemático.
Casos de integração
Fixtures determinísticas de design tokens
Gere strings hex reproduzíveis a partir de colunas XYZ para testes unitários, goldens de CI e pipelines de design systems.
Perguntas técnicas
Quanto custa o conversor de XYZ para hex?
É grátis no seu navegador, nesta página. Pela API, uma solicitação bem-sucedida custa US$ 0,002; entradas inválidas não são cobradas.
Quais campos são obrigatórios?
Números finitos x, y e z (aliases X, Y, Z). Campos ausentes, strings vazias, Infinity e NaN são rejeitados com invalid_input.
O hex é maiúsculo ou minúsculo?
O campo hex principal é minúsculo com um # inicial (por exemplo #ff0000). hex_no_hash omite o hash; uppercase devolve a forma #RRGGBB com A–F.