4 ms·
If you're ever working with colors and have the cpu time available, I highly recommend working with luminosity. The gist is, full-bright yellow is brighter tha
by seph-reed 7y ago
If you're ever working with colors and have the cpu time available, I highly recommend working with luminosity. The gist is, full-bright yellow is brighter than full-bright purple, they have different luminosities. Anything with a luminosity of 100% is white.
CIELAB is worth looking into for the color space which best defines how humans see (https://en.wikipedia.org/wiki/CIELAB_color_space#RGB_and_CMYK_conversions https://en.wikipedia.org/wiki/CIELAB_color_space#RGB_and_CMY...).
Here's some of the relevant code, copied from the private repo I have for this (legally).
https://gist.github.com/SephReed/8c762f3434d683c66339f63342e8ae4b https://gist.github.com/SephReed/8c762f3434d683c66339f63342e...
- mark-r 7y agoThat's not universal advice, it depends on the problem domain. Since people are used to yellow being brighter than purple, if you try to maintain the same luminosity you can make things totally messed up. If you're trying to recolor a purple object to yellow, you're unlikely to get a satisfactory result unless you keep the original intensity - keeping a constant luminosity will give a too dark result that doesn't even look yellow.
- seph-reed 7y agoTrue. In my scenario I was dealing with procedurally generated UIs based off a custom color palette. In order to keep things readable, there has to be a certain level of contrast between text and background. This contrast is based off perceived brightness (lums) rather than rgb diffs. I've also used it for LED projects, and it helps a lot with that obnoxious brighter/darker wave that you get when rotating through hues. The reason I brought it up in this thread in particular is because it's about HSV. Anytime I've dealt with HSV, it's because there's some hue rotation going on. I think HS Lum creates a more intuitive color rotation aesthetic for things with less saturation. It maintains shading rather than colorfulness.
- redsparrow 7y agoThanks for sharing. Here is another Javascript library that supports converting to/from HSL and a bunch of other representations: https://github.com/Qix-/color-convert https://github.com/Qix-/color-convert