Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我应该如何防止看不见的颜色?_Php_Colors - Fatal编程技术网

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)。