gpt4 book ai didi

将 HSL 转换为 RGB 或 Hex 的 PHP 函数

转载 作者:可可西里 更新时间:2023-11-01 00:21:31 25 4
gpt4 key购买 nike

有谁知道可以将 HSL 颜色转换为 RGB 或 Hex 的 PHP 函数(适用于 >5.3)?我已经尝试了十几个 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

关于将 HSL 转换为 RGB 或 Hex 的 PHP 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20423641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com