Todos os valores de RGB devem ser únicos e distinguíveis, o que significa que existem verdadeiramente 256 * 256 * 256 cores.
No HSL, no entanto, se L = 0, H e S podem ser qualquer coisa, mas você ainda tem a mesma cor (preto). Da mesma forma, se S = 0, H não importa, pois você terá um tom de cinza puro. Parece que o modelo HSL oferece, na melhor das hipóteses, 256 * 256 * 256 - 256 * 256 - 256 cores, ou ~ 0,4% menos cores. Isso é verdade?
color
rgb
color-conversion
hsb
1279343
fonte
fonte
Respostas:
Sim e não.
Sim:
Ele oferece uma faixa menor de cores, assumindo que são necessários números inteiros para cada valor . O Photoshop, por exemplo, exige que os valores HSB sejam inteiros e gritarão com você se você tentar o contrário:
No entanto, sua matemática parece estar errada. Você está no caminho certo com RGB: cada valor pode ser um número inteiro de 0 a 255, portanto a gama RGB consiste em 256³ ou 16.581.375 cores.
Para HSL, as restrições de valor são diferentes. H pode ser 0-359, S pode ser 0-100 e B pode ser 0-100. Portanto, o número de trigêmeos HSL exclusivos é 360 * 101 * 101 ou 3.672.360. Isso ainda não leva em consideração cores duplicadas e já somos significativamente menores que o RGB.
Eu não sou bom o suficiente em estatísticas para calcular o número de valores exclusivos para HSL baseado em números inteiros, então nem tentarei
Como resultado, haverá colisão de cores. Você pode tentar fazer isso sozinho verificando o valor de dois valores RGB muito próximos. Por exemplo,
#00AAAA
e#00AAAB
são ambos convertidos para 180 °, 100%, 67% no Photoshop:Não:
O Illustrator é um pouco mais descontraído. Ele está feliz e disposto a aceitar valores decimais para o HSB:
CSS3 também aceita valores decimais para
hsl()
ehsla()
. Essa implementação torna muito mais granular que o RGB, que nunca deve aceitar valores decimais.fonte
HSL (matiz, saturação, luminosidade ) e HSB são modelos de cores derivadas do modelo de cores RGB. Eles cobrem o mesmo intervalo (como na gama) de cores, com uma quantidade menor de pontos "distintos" no meio.
O modelo RGB define 256 ^ 3 ou 16.777.216 pontos
e HSL / HSB define 360 * 101 * 101 ou 3.672.360 pontos.
Você precisaria descobrir programaticamente quantos pontos do mapa HSL para pontos exclusivos de RGB. Não apenas os pontos extremos mencionados são mapeados para um único conjunto de valores RGB. Por exemplo, também existem muitas publicações para um valor de saturação de 1% (em HSL), como você pode verificar aqui .
Essa é a teoria. Na prática, ainda assim, a maioria dos dispositivos não é capaz de processar / apresentar 16.777.216 cores "únicas e distinguíveis" e o olho humano também não. Portanto, na prática, a diferença da quantidade de valores "distintos" geralmente (nem sempre) não importa.
fonte