我该如何检测这个十六进制颜色的强度:#000000
?我可以使用这种方法代码。 例如,如果背景颜色为黑色,则必须将文本颜色设置为#FFFFFF
(白色)。我正在使用这段代码来生成随机颜色:PHP颜色强度检测
$random_color = '#'.base_convert(rand(0, 16777215), 10, 16);
我该如何检测这个十六进制颜色的强度:#000000
?我可以使用这种方法代码。 例如,如果背景颜色为黑色,则必须将文本颜色设置为#FFFFFF
(白色)。我正在使用这段代码来生成随机颜色:PHP颜色强度检测
$random_color = '#'.base_convert(rand(0, 16777215), 10, 16);
有几个有效的方法,但最简单的是将您的颜色转换为灰度,然后检查结果值是否在上半部分或下半部分。如果在上面,那么它是浅色的,你应该使用黑色作为文字颜色,如果在较低的位置,那么它是黑色的,所以白色最好。事情是这样的:
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);
谢谢,现在该代码如何使用它:echo“ salam”; –
见编辑答案 –
我认为,您需要计算好的可读性的负面颜色。试试这个功能:
<?php
function NegativeColor($color)
{
$r = substr($color, 0, 2);
$g = substr($color, 2, 2);
$b = substr($color, 4, 2);
//Invert colors, (255 - colVal)
$r = 0xff-hexdec($r);
$g = 0xff-hexdec($g);
$b = 0xff-hexdec($b);
return str_pad(dechex($r),2,0,STR_PAD_LEFT)
.str_pad(dechex($g),2,0,STR_PAD_LEFT)
.str_pad(dechex($b),2,0,STR_PAD_LEFT);
}
var_dump(NegativeColor('000000'));
//output : string(6) "ffffff"
?>
你是什么人的强度,什么是你想达到什么目的?你想要随机生成的颜色的逆? – jurgemaister
我认为OP正在尝试自动选择一种颜色,以便根据背景的BGcolor在背景上轻松读取颜色。 – Fluffeh