Skip to content

Methodology

Metodologia de cores

sRGB em toda parte. HEX, RGB, HSL e HSV são rótulos diferentes para a mesma cor.

By Published

O cluster de cores converte entre quatro representações de cor — HEX, RGB, HSL e HSV. Todas as quatro são coordenadas diferentes do mesmo espaço sRGB; qualquer conversão entre elas é matematicamente exata (sem perdas em teoria, com arredondamento de inteiros de 8 bits na prática).

O espaço de cores: sRGB como âncora

sRGB (IEC 61966-2-1:1999) é o espaço de cores padrão da web. Todos os valores CSS sem modificador de espaço de cores são sRGB. Todos os valores HEX em designs da web são sRGB. Nosso conversor nunca sai dessa gama — gamas mais amplas como Display P3 ou OKLCH não são suportadas.

HEX ↔ RGB: decodificação direta

Um código HEX como #FF6B35 é apenas três pares de dígitos hexadecimais, cada um representando um canal (vermelho, verde, azul) no intervalo 0–255:

R = 0xFF = 255, G = 0x6B = 107, B = 0x35 = 53

Essa conversão é exata — sem ponto flutuante, sem arredondamento. O inverso (RGB → HEX) formata cada canal como um par hexadecimal em maiúsculas com preenchimento de zero.

RGB ↔ HSL e HSV

HSL (matiz, saturação, luminosidade) e HSV (matiz, saturação, valor) são sistemas de coordenadas cilíndricas sobre o cubo RGB. O algoritmo (Foley & van Dam, 1990) funciona assim:

  1. Normalize R, G, B para o intervalo [0, 1].
  2. Encontre max e min dos três canais.
  3. Calcule L = (max + min) / 2 (ou V = max para HSV).
  4. Calcule S a partir do intervalo max−min normalizado por L.
  5. Calcule H a partir de qual canal é max e das distâncias relativas.

O inverso mapeia o setor de matiz (0–360°) de volta para um tripleto RGB. Arredondamento de ponto flutuante pode introduzir ±1 na representação de inteiro de 8 bits em casos extremos — portanto HEX → HSL → HEX pode desviar em#FF6B34 em vez de #FF6B35 com muito baixa probabilidade.

Luminância relativa e contraste WCAG

Para verificações de contraste de acessibilidade, calculamos a luminância relativa per WCAG 2.2:

L = 0,2126 R_lin + 0,7152 G_lin + 0,0722 B_lin

onde cada canal é linearizado através da função de transferência sRGB (gamma reverso) antes da multiplicação. A proporção de contraste é então (L_mais_claro + 0,05) / (L_mais_escuro + 0,05). O WCAG 2.2 exige 4,5:1 para texto normal e 3:1 para texto grande.

Pressupostos e limitações

  • Apenas sRGB. Display P3, Rec. 2020, OKLCH e outros espaços de gama ampla não são suportados. Valores fora do intervalo sRGB (como color(display-p3 1 0 0)) serão truncados ao cubo sRGB mais próximo.
  • Apenas 8 bits por canal. Cores HDR (10 bits, 12 bits) excedem o intervalo 0–255. O conversor não suporta representações de ponto flutuante de canal.
  • HSL/HSV acromático quando S = 0. Para cinzas puros (#808080, etc.), o matiz é indefinido. O conversor exibe H = 0, consistente com a especificação CSS Color Level 4.
  • Desvio de arredondamento em conversões duplas. HEX → HSL → HEX pode desviar em ±1 em um canal. Isso é esperado e decorre da representação inteira de 8 bits.

Frequently asked questions

Qual espaço de cores o Convertitive usa?
Todas as conversões usam sRGB (IEC 61966-2-1:1999) como espaço de cores canônico. HEX, RGB, HSL e HSV são todas representações de coordenadas diferentes da mesma gama sRGB — converter entre elas é sem perdas. Espaços de gama ampla (Display P3, Rec. 2020) não são suportados atualmente; os valores são sempre assumidos como sRGB.
Qual fórmula o Convertitive usa para conversão RGB ↔ HSL?
O algoritmo padrão de Foley & van Dam (Computer Graphics: Principles and Practice, 1990). Com RGB normalizado (r, g, b ∈ [0,1]): L = (max + min) / 2; S = (max − min) / (1 − |2L − 1|) quando L ≠ 0 ou 1; H é calculado a partir de qual canal é o máximo e as distâncias relativas entre canais. O inverso usa o mesmo termo de croma c = (1 − |2L − 1|) × S e o mapeamento hue-para-RGB de seis setores.
Qual é a precisão da conversão HEX ↔ RGB?
Exata e sem perdas. Um código HEX como #FF6B35 mapeia para rgb(255, 107, 53) por simples decodificação base-16 de cada par de bytes — sem ponto flutuante envolvido. A única perda de precisão ocorre ao converter para HSL ou HSV, que usam divisão de ponto flutuante e arredondam de volta para inteiros de 8 bits com erro de arredondamento de ±1 unidade em casos extremos.
Quais são as limitações do conversor de cores?
Três limitações principais: (1) apenas sRGB — valores de gama ampla Display P3 ou OKLCH não são suportados; (2) 8 bits por canal — representações de cor HDR ou 10 bits estão fora do intervalo; (3) HSL/HSV são acromáticos (matiz indefinido) quando S = 0, então o conversor exibe H = 0 para cinzas, consistente com CSS Color Level 4 §4.2.
De onde vem a fórmula de luminância relativa?
A fórmula de luminância relativa L = 0,2126 R + 0,7152 G + 0,0722 B (com linearização via função de transferência sRGB) é definida no WCAG 2.2 §1.4.3. Ela é usada para calcular taxas de contraste WCAG. Os coeficientes refletem a sensibilidade do sistema visual humano às primárias sRGB conforme definido no ICC.1:2010.

Related

Published May 14, 2026