Conversor de RGB para LCH
Descreva uma cor RGB do jeito que ela é ajustada: luminosidade de 0 para o preto a cerca de 100 para o branco, croma como intensidade e matiz como um ângulo de 0 até 360°. Mude um sem mexer nos outros. 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
- Resistência (Ω)
- 255
- G
- 128
- B
- 0
- L
- 67,0548169961
- C
- 85,5142055704
- H
- 59,9466748349
- L*
- 67,0548169961
Este conversor de RGB para LCH recebe três intensidades de canal sRGB — vermelho, verde e azul — cada uma como um número inteiro de zero a duzentos e cinquenta e cinco, e devolve coordenadas CIE LCH (luminosidade L*, croma C* e ângulo de matiz h° em graus) calculadas com o ponto branco D65 padrão usado em fluxos de web e impressão. Designers, engenheiros de acessibilidade e estudantes usam LCH quando uma paleta vive em canais de oito bits, mas a tarefa precisa de um espaço perceptualmente estruturado em que luminosidade, croma e matiz possam ser editados de forma independente, sem os eixos retangulares a* e b* do Lab. O mecanismo é totalmente determinístico: descompande cada canal de forma inversa, multiplica pela matriz sRGB-para-XYZ do D65, normaliza pelo branco de referência D65, forma CIE Lab e então obtém C* como a hipotenusa de a* e b* e h° a partir de atan2 de b* e a* — nunca chamando a rede, amostrando aleatoriedade ou dependendo do relógio.
O que a conversão de RGB para LCH significa e o que a resposta contém
No modelo sRGB de oito bits usado por CSS e pela maioria dos gráficos web, cada um de vermelho, verde e azul é um canal inteiro de zero a duzentos e cinquenta e cinco.
CIE LCH é a forma polar de CIE L*a*b*: o mesmo estímulo é expresso como luminosidade L* (cerca de zero para o preto até cerca de cem para o branco difuso), croma C* medindo a distância ao eixo neutro, e matiz h° como um ângulo em torno desse eixo em graus de zero até, sem incluir, trezentos e sessenta.
A conversão primeiro escala cada canal dividindo por duzentos e cinquenta e cinco, depois desfaz a gama sRGB (a curva de descompansão inversa IEC seis-um-nove-seis-seis) para que os valores se tornem luz linear. Esses canais lineares passam por uma matriz fixa três por três para CIE XYZ sob o iluminante D65; cada componente triestímulo é dividido pelo branco de referência D65, e então a função pivô f da CIE é aplicada — raiz cúbica acima de um limiar pequeno, ramo linear abaixo — para formar L*, a* e b*.
A partir do Lab, o passo cilíndrico é de forma fechada: C* é o comprimento euclidiano do vetor a*b*, e h° é o arctangente de dois argumentos de b* e a* convertido em graus e envolvido no intervalo semiaberto de zero a trezentos e sessenta. Quando o croma é efetivamente zero, a matiz é geometricamente indefinida, por isso esta calculadora define h° como zero para cores acromáticas como preto puro, branco puro e cinzas neutros.
Não há caminho que aceite percentuais ou canais de ponto flutuante como entrada, nem um limite silencioso de duzentos e cinquenta e seis para duzentos e cinquenta e cinco. Casos rejeitados incluem a ausência de um campo r, g ou b, strings vazias após o trim, números não inteiros, texto não numérico, Infinity ou NaN, e qualquer canal estritamente abaixo de zero ou acima de duzentos e cinquenta e cinco.
Onde a conversão de RGB para LCH se encaixa em design, estudo e software
Designers encontram este mapeamento quando um guia de marca lista amostras RGB e um fluxo de produção ou edição perceptual espera alvos LCH, quando a luminosidade deve permanecer fixa enquanto a matiz gira para tintas e sombras, ou quando um sistema de design documenta lado a lado valores de referência RGB de tela e LCH para geração de rampas.
Engenheiros de acessibilidade usam L* e C* ao raciocinar sobre luminosidade percebida separada da força cromática, ao verificar que dois estados de interface permanecem distinguíveis após mudanças de matiz, ou ao preparar notas que depois alimentarão checagens formais de delta-E em Lab antes de reexpressar a mesma cor como LCH para autoria.
Estudantes veem isso em cursos de computação gráfica e ciência da cor que introduzem XYZ, Lab e depois a forma cilíndrica LCH, em aulas de fotografia digital que alternam entre controles de canal e controles de matiz e croma, e em aquecimentos de entrevista que pedem a conversão mental de um triplo curto em coordenadas Lab polares.
Combine com ferramentas de cor multiformato quando precisar de hexadecimal ou CMYK, com o conversor Lab quando precisar apenas de a* e b* retangulares, e com outros conversores gratuitos determinísticos ao montar um pequeno laboratório de higiene de sistemas de design.
Casos de uso
Edição perceptual com matiz e croma independentes
Transforme triplos RGB de marca em CIE LCH para que designers girem a matiz ou escalem o croma mantendo a luminosidade fixa em rampas e variantes.
Lição de casa e demos didáticas
Verifique o trabalho de sRGB para LCH dos alunos e demonstre ao vivo XYZ, Lab e LCH polar sem calculadoras opacas.
Perguntas frequentes
Qual intervalo é permitido para r, g e b?
Cada canal deve ser um inteiro de 0 a 255 inclusive.
Qual ponto branco e qual caminho este conversor usa?
A cadeia é sRGB → linear → XYZ → Lab → LCH.
Como C* e h° são definidos a partir do Lab?
C* é hypot(a*, b*). A matiz h° é atan2(b*, a*) em graus, envolvida em [0, 360). Quando C* é efetivamente zero (acromático), h° é definido como 0.
Por que um cinza recebe matiz 0?
Cinza, preto e branco não têm croma, então o ângulo de matiz fica indefinido. O conversor fixa esse valor em 0 por convenção, para que a mesma cor neutra sempre dê o mesmo resultado.
Quais valores LCH o laranja 255, 128, 0 gera?
Luminosidade 67.0548169961, croma 85.5142055704 e matiz 59.9466748349°, com o ponto branco D65. A luminosidade é a mesma do Lab; muda apenas a forma de descrever a cor.
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/rgb-lch \
-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-lch", {
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-lch",
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-lch", 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-lch", 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
{
"r": 255,
"g": 128,
"b": 0
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb_lch",
"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.
Limites
min_channel | 0 |
max_channel | 255 |
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
Canais fora de zero a duzentos e cinquenta e cinco são rejeitados com um erro claro de invalid_input, em vez de limitados silenciosamente.
O que a conversão de RGB para LCH significa e o que a resposta contém
A resposta devolve os inteiros validados r, g e b; L, C e H (com aliases L_star, C_star e h_deg); a* e b* intermediários de Lab como a, lab_b, a_star e b_star para que b* de Lab não colida com o canal azul de RGB; X Y Z intermediários; strings de resumo rgb, lch e lab; white_point definido como D65; a etiqueta de método rgb_to_lch; e um breve lembrete da fórmula. O mecanismo constrói um triplo LCH exato para três canais legais ou rejeita a solicitação com invalid_input. Se você precisar de LCH para RGB, empacotamento hexadecimal, HSV, HSL ou CMYK, use uma ferramenta reversa ou multiformato dedicada; esta página responde apenas a canais sRGB inteiros convertidos em um triplo CIE LCH estável, adequado para tokens, testes unitários e consumidores da API que desejam controles independentes de luminosidade, croma e matiz.
Como r, g e b são lidos e como o LCH permanece reproduzível
Espaços em branco externos em canais de string são removidos; um sinal de mais inicial opcional é permitido apenas quando os caracteres restantes são dígitos decimais que resultam em um inteiro dentro do intervalo. Um número JavaScript simples é aceito somente quando é um inteiro finito dentro de zero a duzentos e cinquenta e cinco; valores como cento e vinte e oito vírgula cinco falham na validação em vez de serem arredondados, e valores negativos ou de duzentos e cinquenta e seis em diante falham com uma mensagem que nomeia o canal e afirma que ele deve permanecer entre zero e duzentos e cinquenta e cinco. O vermelho puro mapeia para um L* moderado com C* grande e matiz perto de quarenta graus; o branco puro e o preto puro mapeiam para croma zero com h° definido como zero; verdes e azuis saturados caem nos setores de matiz esperados do plano Lab. Os campos preferidos são r para vermelho, g para verde e b para azul, mas os aliases red e R maiúsculo para vermelho, green e G maiúsculo para verde, e blue e B maiúsculo para azul são aceitos para que planilhas, query strings e formulários tipados reutilizem o mesmo contrato sem renomear colunas. Após a validação, a conversão usa apenas aritmética de forma fechada nos canais lineares, no ponto branco D65, nas identidades Lab e nas transformações polares de croma e matiz, e então arredonda os componentes de ponto flutuante para uma largura decimal fixa, de modo que goldens de JSON e asserções de CI permaneçam estáveis entre plataformas. 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 sem reimplementar a gama inversa, a normalização D65 e a conversão polar de Lab para LCH por conta própria.
Onde a conversão de RGB para LCH se encaixa em design, estudo e software
Nesta página o trabalho roda inteiramente no seu navegador; pela API cada consulta bem-sucedida custa US$ 0,002, validação falha não é cobrada, e nada é armazenado depois que a resposta retorna. 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 passar de uma demonstração em sala ou revisão de design a um pipeline automatizado sem mudar o resultado matemático.
Casos de integração
Fixtures de teste determinísticos
Gere resultados LCH reproduzíveis para testes unitários, checagens de propriedades e asserções de CI em helpers de cor e tokens de design.
Perguntas técnicas
Quanto custa o conversor de RGB para LCH?
É grátis no navegador nesta página. Pela API, uma solicitação bem-sucedida custa US$ 0,002; entradas inválidas não são cobradas.
Por que 256 é rejeitado em vez de limitado?
A limitação silenciosa esconde erros de dados. Canais fora do intervalo falham com invalid_input para que o chamador corrija os valores de origem em vez de publicar a cor errada.