Conversor RGB para OKLCH
Obtenha as coordenadas OKLCH de uma cor RGB: 255, 87, 51 vira luminosidade 0.680358, croma 0.210012 e matiz 33.691637°. Monte escalas e paletas cujos passos parecem uniformes aos olhos. 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
- 87
- B
- 51
- L
- 0,680358
- C
- 0,210012
- H
- 33,691637
- OKLCH
- oklch(0.680358 0.210012 33.691637)
Este conversor de RGB para OKLCH transforma três canais sRGB conhecidos em coordenadas cilíndricas perceptualmente uniformes. Informe valores de vermelho, verde e azul entre 0 e 255 para receber luminosidade, croma e matiz OKLCH, além de uma string pronta para CSS. O cálculo percorre um caminho determinístico completo: decodificação da função de transferência sRGB, matrizes de RGB linear para OKLab e conversão cilíndrica de OKLab para OKLCH. Canais ausentes, não finitos, inválidos ou fora do intervalo retornam um erro de validação claro, sem recorte silencioso.
Por que converter coordenadas sRGB para OKLCH
RGB descreve como uma tela combina luz vermelha, verde e azul, porém variações numéricas iguais nesses canais raramente parecem ter o mesmo tamanho. Aumentar um canal em vinte unidades pode gerar uma mudança evidente em uma região da gama e uma diferença sutil em outra. OKLab foi criado para aproximar as distâncias entre coordenadas das diferenças de cor percebidas por uma pessoa.
OKLCH reorganiza OKLab em coordenadas cilíndricas mais intuitivas: luminosidade indica o quanto a cor parece clara ou escura, croma mede a distância do eixo neutro e matiz informa o ângulo ao redor desse eixo em graus. Isso favorece escalas de tokens, cores relacionadas e comparações de paleta. O contrato aceita apenas canais sRGB reais entre 0 e 255, inclusive valores fracionários, sem tentar interpretar hexadecimal, porcentagens, nomes de cores ou perfis de ampla gama.
O matiz é normalizado entre zero e menos de 360 graus. Para uma cor acromática, cujo matiz não existe matematicamente, o resultado usa zero como convenção estável e determinística.
Como a conversão é calculada
Não se pode aplicar uma matriz OKLab diretamente aos números exibidos em RGB, pois valores sRGB comuns são codificados por uma função de transferência. Primeiro, cada canal é dividido por 255 e decodificado pela função sRGB por partes. Valores baixos usam o trecho linear; valores maiores usam a função de potência.
Os três componentes de luz linear são multiplicados pela matriz fixa de RGB linear para LMS da definição de OKLab. Em seguida, calcula-se a raiz cúbica de cada componente LMS e aplica-se a segunda matriz fixa, que produz a luminosidade OKLab e os dois eixos oponentes a e b. Por fim, a conversão cilíndrica calcula o croma como o comprimento euclidiano do par a e b, e o matiz com atan2, convertido de radianos para graus e normalizado em um círculo positivo.
A luminosidade segue a escala convencional de OKLab, aproximadamente de zero a um em cores sRGB, e não uma porcentagem. A string oklch fornecida reutiliza exatamente os mesmos valores arredondados.
Como usar o resultado com segurança
Envie campos numéricos chamados r, g e b. Todos são obrigatórios, finitos e limitados ao intervalo inclusivo de 0 a 255. Valores fracionários são aceitos porque imagens amostradas e pipelines intermediários podem preservar mais precisão que canais inteiros de oito bits.
Strings numéricas, NaN, Infinity, listas e objetos não são aceitos como canais. Uma resposta bem-sucedida repete os valores validados e devolve l, c, h e uma string oklch compacta. Ao migrar uma paleta, mantenha os RGB originais ao lado das coordenadas convertidas até validar o resultado visual.
OKLCH é útil para edição perceptual, mas aumentar o croma ou alterar a luminosidade pode criar uma cor fora da gama da tela ou do formato final. Este conversor apenas informa as coordenadas do sRGB recebido; não faz mapeamento de gama, teste de contraste, composição alfa, conversão de perfil nem certificação de acessibilidade. Use ferramentas específicas depois da conversão.
Como não há rede, relógio, aleatoriedade ou estado mutável, entradas iguais produzem saídas iguais nos dois canais.
Casos de uso
Modernizar tokens de design
Converta cores RGB antigas em OKLCH antes de organizar escalas perceptuais de luminosidade e croma.
Analisar relações de uma paleta
Compare luminosidade, croma e matiz sem tratar a distância bruta entre canais RGB como distância visual.
Preparar valores de cor para CSS
Gere uma string OKLCH estável a partir de sRGB para documentação, protótipos, folhas de estilo ou pipelines de tokens.
Perguntas frequentes
Qual intervalo RGB o conversor aceita?
Cada canal r, g e b deve ser um número finito entre 0 e 255, inclusive. Números inteiros e fracionários são aceitos.
A luminosidade OKLCH é retornada como porcentagem?
Não. O campo l usa a escala numérica convencional de OKLab, aproximadamente de 0 a 1 para cores sRGB. Multiplique por 100 apenas se o destino exigir porcentagem.
Por que o matiz é zero para cinza, preto ou branco?
O matiz é indefinido quando o croma é praticamente zero. O conversor devolve 0 graus como convenção determinística, em vez de null ou de um ângulo gerado por ruído de ponto flutuante.
A ferramenta faz mapeamento de gama?
Não. Ela converte uma cor sRGB já dentro da gama. Caso você edite as coordenadas depois, use um mapeador antes de exportar para um espaço limitado.
Posso digitar canais com casas decimais?
Sim. Cada canal pode ser qualquer número de 0 a 255, com decimais. Códigos hex, porcentagens e nomes de cor não são adivinhados, e valores ausentes ou fora da faixa são recusados em vez de cortados.
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-oklch \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"r":255,"g":87,"b":51}'const res = await fetch("https://api.kit.forhosting.com/color/rgb-oklch", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"r": 255,
"g": 87,
"b": 51
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/rgb-oklch",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"r": 255,
"g": 87,
"b": 51
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/rgb-oklch", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"r":255,"g":87,"b":51}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"r":255,"g":87,"b":51}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/rgb-oklch", 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": 87,
"b": 51
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb_oklch",
"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
Como a conversão é calculada
As coordenadas são arredondadas para seis casas decimais, mantendo o JSON estável, legível e preciso.
Como usar o resultado com segurança
Chamadas bem-sucedidas da API custam US$ 0,002 por item, enquanto a versão no navegador roda localmente.
Perguntas técnicas
Quanto custa uma conversão pela API?
Uma chamada bem-sucedida custa US$ 0,002 por item. O conversor do navegador roda localmente e entradas inválidas retornam um erro tipado.