All values of RGB should be unique and distinguishable, meaning there are truly 256*256*256 colors.
In HSL, however, if L=0 then H and S can be anything, but you still get the same color (black). Similarly, if S=0 then H doesn’t matter, as you’ll get some shade of pure grey. So it seems that the HSL model offers at best 256*256*256 – 256*256 – 256 colors, or ~0.4% less colors. Is this true?
Answer
Yes and no.
Yes:
It offers a smaller range of colors assuming that integers are required for each value. Photoshop, for example, requires HSB values to be integer and will yell at you if you try otherwise:
However, your math seems to be off. You’re on the right track with RGB: each value can be an integer from 0-255, so the RGB gamut consists of 256³ or 16,581,375 colors.
For HSL, the value constraints are different. H can be 0-359, S can be 0-100, and B can be 0-100. So the number of unique HSL triplets is 360*101*101, or 3,672,360. This does not yet take into account duplicate colors and we’re already significantly smaller than RGB.
I am not good enough at statistics to calculate the number of unique values for integer-based HSL, so I won’t even try
As a result, there is going to be color collision. You can try this yourself by checking the value of two very close RGB values. For example, #00AAAA
and #00AAAB
are both converted to 180°, 100%, 67% in Photoshop:
No:
Illustrator is a bit more laid back. It is happy and willing to accept decimal values for HSB:
CSS3 also accepts decimal values for hsl()
and hsla()
. This implementation makes it way more granular than RGB, which should never accept decimal values.
Attribution
Source : Link , Question Author : 1279343 , Answer Author : JohnB