我使用以下功能生成柔和的色彩。但有时会产生深色调(如#B69C97)。如何确保仅生成浅色调?
function get_color($name) {
$hash = md5($name);
$color1 = hexdec(substr($hash, 8, 2));
$color2 = hexdec(substr($hash, 4, 2));
$color3 = hexdec(substr($hash, 0, 2));
if($color1 < 128) $color1 += 128;
if($color2 < 128) $color2 += 128;
if($color3 < 128) $color3 += 128;
return "#" . dechex($color1) . dechex($color2) . dechex($color3);
}
答案 0 :(得分:0)
#B69C97
为(182,156,151)
。你对&#34; dark&#34;的定义根据你的代码小于128,这被证明是错误的,因为(182, 156, 151)
仍然是&#34;黑暗&#34;为了你。我会尝试更改此默认值&#34; dark&#34;从128到更高的值,比如160.就这个例子而言,你将消除包含小于160的值的颜色,如你的情况,并减轻平均输出。
答案 1 :(得分:0)
晚了几年就可以了,但这可能会对某人有所帮助
is_some()
这将返回rgb值。
这应该生成一种随机的柔和颜色,该颜色使用红色,绿色或蓝色作为其最主要的直白颜色。
编辑:
$baseColors = [
1 => 'r',
2 => 'g',
3 => 'b'
];
$colorMap = [];
$minValue = 155;
$maxValue = 200;
$primaryColorIndex = rand(1, 3);
$primaryColor = $baseColors[$primaryColorIndex];
unset($baseColors[$primaryColorIndex]);
$colorMap[$primaryColor] = 255;
foreach($baseColors as $baseColor) {
$colorMap[$baseColor] = rand($minValue, $maxValue);
}
krsort($colorMap);
$color = '';
foreach($colorMap as $value) {
$color .= $value;
if($value !== end($colorMap)) {
$color .= ',';
}
}
return 'rgb(' . $color . ')';
这将返回一个十六进制值。