计算颜色的亮度值
有时候我们需要知道某个颜色的亮度值,比如文本的背景色。当用户可以修改文本的背景色时为了使用户能够看清文字,需要根据背景色的亮度实时调节文本的颜色(黑色或白色)。
这里我使用Lab色彩空间的亮度。具体算法是由RGB色彩空间转换到XYZ 色彩空间再转换到Lab。
函数如下:返回值为0到100
function getLight(rgbHex){
var color = parseInt(rgbHex, 16);
var y = (0.2973769 * ((color & 0xff0000) >> 16) + 0.6273491 * ((color & 0xff00) >> 8) + 0.0752741 * (color & 0xff)) / 255;
if (y > 0.008856){
return 116 * Math.pow(y, 1/3) - 16;
} else {
return 903.29629629 * y;
}
}