PHP函数将HSL转换为RGB或Hex
发布时间:2020-12-13 21:50:04 所属栏目:PHP教程 来源:网络整理
导读:有没有人知道 PHP函数(对于 5.3)可以将HSL颜色转换为RGB或Hex?我已经尝试了十几次Google搜索,但我发现的功能都没有按预期工作. 函数是否转换为RGB或十六进制并不重要,因为在这两者之间进行转换是微不足道的.输入是CSS的HSL值(色调:0-360,饱和度:0-100,亮
有没有人知道
PHP函数(对于> 5.3)可以将HSL颜色转换为RGB或Hex?我已经尝试了十几次Google搜索,但我发现的功能都没有按预期工作.
函数是否转换为RGB或十六进制并不重要,因为在这两者之间进行转换是微不足道的.输入是CSS的HSL值(色调:0-360,饱和度:0-100,亮度:0-100). 编辑:指定输入和输出格式将是一个奖金:) 解决方法
从Jim的评论(
PHP HSV to RGB formula comprehension)链接中的一个答案中获取代码,我们可以按如下方式计算:
<?php $hue = 209; $sat = 75; $lum = 60; $hue /= 360; $sat /= 100; $lum /= 100; $result = ColorHSLToRGB($hue,$sat,$lum); var_dump($result); echo '<br>'; printf("rgb = %d,%d,%d<br>",$result['r'],$result['g'],$result['b']); function ColorHSLToRGB($h,$s,$l){ $r = $l; $g = $l; $b = $l; $v = ($l <= 0.5) ? ($l * (1.0 + $s)) : ($l + $s - $l * $s); if ($v > 0){ $m; $sv; $sextant; $fract; $vsf; $mid1; $mid2; $m = $l + $l - $v; $sv = ($v - $m ) / $v; $h *= 6.0; $sextant = floor($h); $fract = $h - $sextant; $vsf = $v * $sv * $fract; $mid1 = $m + $vsf; $mid2 = $v - $vsf; switch ($sextant) { case 0: $r = $v; $g = $mid1; $b = $m; break; case 1: $r = $mid2; $g = $v; $b = $m; break; case 2: $r = $m; $g = $v; $b = $mid1; break; case 3: $r = $m; $g = $mid2; $b = $v; break; case 4: $r = $mid1; $g = $m; $b = $v; break; case 5: $r = $v; $g = $m; $b = $mid2; break; } } return array('r' => $r * 255.0,'g' => $g * 255.0,'b' => $b * 255.0); } ?> 输出: array(3) { ["r"]=> float(76.5) ["g"]=> float(155.55) ["b"]=> float(229.5) } rgb = 76,155,229 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |