好的,我已经编写了一个应该将 HSL 颜色值转换为 RGB 的函数。我根据这个脚本用 PHP 重写了它:http ://www.easyrgb.com/index.php?X=MATH&H=19#text19
这就是我所拥有的:
function HSL2RGB($h, $s, $l){
function hue2rgb($v1, $v2, $vH){
$sH = $vH;
if($vH<0) $sH += 1;
if($vH>1) $sH -= 1;
if((6*$sH)<1) return $v1+($v2-$v1)*6*$sH;
if((2*$sH)<1) return $v2;
if((3*$sH)<2) return $v1+($v2-$v1)*((2/3)-$sH)*6;
return $v1;
}
$h *= (5/18);
$s /= 100;
$l /= 100;
$r=$g=$b=NULL;
if($s==0){
$r=$l*255;
$g=$l*255;
$b=$l*255;
}else{
if($l<0.5)
$var_2 = $l*(1+$s);
else
$var_2 = ($l+$s)-($s*$l);
$var_1 = 2*$l-$var_2;
$r = 255*hue2rgb($var_1, $var_2, $h+(1/3));
$g = 255*hue2rgb($var_1, $var_2, $h);
$b = 255*hue2rgb($var_1, $var_2, $h-(1/3));
}
return array('r'=>$r,'g'=>$g,'b'=>$b);
}
var_dump(HSL2RGB(196.4, 100, 59.8));
此脚本的输出:
array(3) {
["r"]=>
float(49.98)
["g"]=>
float(49.98)
["b"]=>
float(49.98)
}
正确的输出是R: 50, G:199, B:255
。我从easyrgb.com
. 我只是不知道为什么它不起作用。任何帮助都是极好的。谢谢。