1
好的,我写了一个函数,应该将HSL颜色值转换为RGB。我照着这个脚本在PHP重写它:http://www.easyrgb.com/index.php?X=MATH&H=19#text19HSL为什么不是这个RGB转换函数的工作原理?
这是我有:
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
的参考脚本中完美地调整了它。我只是不知道为什么它不工作。任何帮助都是极好的。谢谢。
尼斯赶上,但它并没有解决问题。 – nkcmr 2012-07-31 01:45:22
我建议了其他的东西,看我的答案中的更新。 – Jocelyn 2012-07-31 01:46:47
我将其添加到代码中。没有错误。 – nkcmr 2012-07-31 01:50:18