Php 我应该如何防止看不见的颜色?
我有以下代码:Php 我应该如何防止看不见的颜色?,php,colors,Php,Colors,我有以下代码: function rand_colorCode(){ $r = dechex(mt_rand(0,255)); $g = dechex(mt_rand(0,255)); $b = dechex(mt_rand(0,255)); $rgb = $r.$g.$b; if($r == $g && $g == $b){ $rgb = substr($rgb,0,3); } return '#'.$rgb; } $code = rand
function rand_colorCode(){
$r = dechex(mt_rand(0,255));
$g = dechex(mt_rand(0,255));
$b = dechex(mt_rand(0,255));
$rgb = $r.$g.$b;
if($r == $g && $g == $b){
$rgb = substr($rgb,0,3);
}
return '#'.$rgb;
}
$code = rand_colorCode();
这将生成一个随机颜色,稍后将其插入mysql数据库。但有时它会产生太浅的颜色。(这是一个问题,因为这些颜色稍后会显示,而我的背景色为白色)
我的简单问题是:如何防止颜色太浅或太暗?如何自定义代码?使用较短的颜色范围:
mt_rand(80,200)
下边界阻止近黑色,而高边界阻止近白色。您可以根据需要调整此范围。使用较短的颜色范围:
mt_rand(80,200)
下边界阻止近黑色,而高边界阻止近白色。您可以调整此范围以满足您的需要。例如,白色的RGB代码是255、255、255。
您可以定义一个规则,即如果所有三个值(R、G和B)都高于某个阈值,则颜色将太浅,因此无法正确显示。试着通过看一看调色板来定义一个树。也许200,200,200是你想要的最大值,50,50是最小值
然后,您可以将颜色从50随机分配到200(如果您将其定义为treshold)。所以不是
$r = dechex(mt_rand(0,255));
是吗
$r = dechex(mt_rand(50,200));
这可能是一种简单的修复方法。好吧(例如)白色的RGB代码是255、255、255。
您可以定义一个规则,即如果所有三个值(R、G和B)都高于某个阈值,则颜色将太浅,因此无法正确显示。试着通过看一看调色板来定义一个树。也许200,200,200是你想要的最大值,50,50是最小值
然后,您可以将颜色从50随机分配到200(如果您将其定义为treshold)。所以不是
$r = dechex(mt_rand(0,255));
是吗
$r = dechex(mt_rand(50,200));
这可能是一种简单的修复方法。您可以计算当前颜色集的亮度,并根据一些预定义的限制进行验证:
while ( true )
{
$r = dechex(mt_rand(0,255));
$g = dechex(mt_rand(0,255));
$b = dechex(mt_rand(0,255));
$brightness = ( 0.2126 * $r ) + ( 0.7152 * $g ) + ( 0.0722 * $b )
if ( $brightness > $lower_limit || $brightness < $upper_limit )
break;
}
while(true)
{
$r=dechex(百万兰特(0255));
$g=dechex(百万兰特(0255));
$b=十进位(百万兰特(0255));
亮度=(0.2126*$r)+(0.7152*$g)+(0.0722*$b)
如果($brightness>$下限| |$brightness<$上限)
打破
}
公式取自此处您可以计算当前颜色集的亮度,并根据一些预定义的限制进行验证:
while ( true )
{
$r = dechex(mt_rand(0,255));
$g = dechex(mt_rand(0,255));
$b = dechex(mt_rand(0,255));
$brightness = ( 0.2126 * $r ) + ( 0.7152 * $g ) + ( 0.0722 * $b )
if ( $brightness > $lower_limit || $brightness < $upper_limit )
break;
}
while(true)
{
$r=dechex(百万兰特(0255));
$g=dechex(百万兰特(0255));
$b=十进位(百万兰特(0255));
亮度=(0.2126*$r)+(0.7152*$g)+(0.0722*$b)
如果($brightness>$下限| |$brightness<$上限)
打破
}
公式取自此处+1,尽管我认为第二或第三个公式更适用+1尽管我认为第二或第三个公式更适用这将排除0,0255等纯色;0,255,0; 255,0,0为蓝色、绿色和红色,与黑白背景无关。这将排除0,0255等纯色;0,255,0; 255,0,0,蓝色、绿色和红色,与黑白背景无关。我建议您重新评估您的方法。使用限值50-200而不是0255将从可能生成的颜色中消除红色(255,0,0)、绿色(0255,0)和蓝色(0,0255)。我建议您重新评估您的方法。使用限值50-200而不是0255将从可能生成的颜色中消除红色(255,0,0)、绿色(0255,0)和蓝色(0,0255)。