我有一个生成随机颜色的 php 函数,但我需要截断它,以便它只返回浅色(这样文本可以更容易地对比),我该怎么做?我很难用十六进制思考来进行比较。这是我的功能:
function randomColor() {
$str = '#';
for($i = 0 ; $i < 6 ; $i++) {
$randNum = rand(0 , 15);
switch ($randNum) {
case 10: $randNum = 'A'; break;
case 11: $randNum = 'B'; break;
case 12: $randNum = 'C'; break;
case 13: $randNum = 'D'; break;
case 14: $randNum = 'E'; break;
case 15: $randNum = 'F'; break;
}
$str .= $randNum;
}
return $str;
}
$color = randomColor();
Run Code Online (Sandbox Code Playgroud)
浅色在十六进制中具有更高的值(#FFFFFF = 白色)。
生成三个颜色会更好,而不是生成 6 个单独的部分,以便生成红色、绿色和蓝色分量。此外,您可以使用dechex()从十进制转换为十六进制并摆脱那个丑陋的switch结构。
您可以rand()为较浅的颜色设置一个高于 0的最小值,或者同样将最大值设置为较低以使其更暗。
function randomColor ($minVal = 0, $maxVal = 255)
{
// Make sure the parameters will result in valid colours
$minVal = $minVal < 0 || $minVal > 255 ? 0 : $minVal;
$maxVal = $maxVal < 0 || $maxVal > 255 ? 255 : $maxVal;
// Generate 3 values
$r = mt_rand($minVal, $maxVal);
$g = mt_rand($minVal, $maxVal);
$b = mt_rand($minVal, $maxVal);
// Return a hex colour ID string
return sprintf('#%02X%02X%02X', $r, $g, $b);
}
Run Code Online (Sandbox Code Playgroud)
因此,您可以调用例如randomColor(150,255)获取更浅的颜色或 randomColor(0,100)获取更深的颜色。
| 归档时间: |
|
| 查看次数: |
3129 次 |
| 最近记录: |