有几种有效的方法,但最简单的方法是将颜色转换为灰度,然后检查结果值是否在上半部分或更低。如果在鞋面,那么它是浅色,你应该使用黑色作为文字颜色,如果在较低,那么它是黑暗的,所以白色将是最好的。像这样的东西:
function getReadableTextColor( $backgroundColor ) {
$R = ($backgroundColor >> 16 ) & 0x000000ff;
$G = ($backgroundColor >> 8 ) & 0x000000ff;
$B = ($backgroundColor ) & 0x000000ff;
// grayscale: 0.3RED + 0.59GREEN + 0.11Blue
$K = (($R * 0.3) + ($G * 0.59) + ($B * 0.11));
// black fg color for light background, white for dark ones
return ( $K > 128 ) ? 0x000000 : 0xffffff;
}然后像这样使用
$bgColor = rand(0, 16777215);
$bgcolorHTML = '#' . base_convert($bgColor, 10, 16);
$fgColor = getReadableTextColor( $bgColor );
$fgColorHtml = '#' . base_convert($fgColor, 10, 16);