狄烁STEC的试验场

hello earth

导航

计算颜色的亮度值

有时候我们需要知道某个颜色的亮度值,比如文本的背景色。当用户可以修改文本的背景色时为了使用户能够看清文字,需要根据背景色的亮度实时调节文本的颜色(黑色或白色)。

这里我使用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;
}
}

posted on 2011-09-07 18:22  狄烁STEC  阅读(2143)  评论(2编辑  收藏  举报