gpt4 book ai didi

PHP 红到绿 RGB 颜色热图

转载 作者:行者123 更新时间:2023-12-03 15:46:19 25 4
gpt4 key购买 nike

我似乎无法弄清楚这一点。我有一组缩放的值 (0...1),我需要将颜色与之关联。最高 (1) 为红色,最低 (0) 为绿色。

对于介于 0 和 1 之间的值,我似乎无法找到如何在红色和绿色之间获得 RGB 颜色。

这是我将用于缩放值的缩放函数:

function scale_value($value, $srcmin, $srcmax, $destmin = 0, $destmax = 1)
{
# How Far In Source Range Are We
$pos = (($value - $srcmin) / ($srcmax - $srcmin));
return ($pos * ($destmax - $destmin)) + $destmin;
}

我认为将它们从 0 缩放到 1 将使我正在努力的下一部分变得更容易。

这是我想出的一个非常糟糕的尝试,但失败得很厉害。
function make_color($value)
{
$red = $value > 0.5
? (1 - 2 * ($value - 0.5) / 1)
: 1;
$green = $value > 0.5
? 1
: 2 * ($value / 1);
$blue = 0;
return "rgb($red,$green,$blue)";
}

有没有人有使用 PHP 来确定用于介于 1 和 0 之间的值的颜色的经验?

最佳答案

找到解决方案,转换JS实现的方案posted here PHP 并反转红色到绿色的极性,因此红色为高,绿色为低。

它看起来像这样:

/**
* @param $value
* @param integer|float $min
* @param integer|float $max
* @return string
*/
function make_color($value, $min = 0, $max = .5)
{
$ratio = $value;
if ($min > 0 || $max < 1) {
if ($value < $min) {
$ratio = 1;
} else if ($value > $max) {
$ratio = 0;
} else {
$range = $min - $max;
$ratio = ($value - $max) / $range;
}
}

$hue = ($ratio * 1.2) / 3.60;
$rgb = hsl_to_rgb($hue, 1, .5);

$r = round($rgb['r'], 0);
$g = round($rgb['g'], 0);
$b = round($rgb['b'], 0);

return "rgb($r,$g,$b)";
}

这也依赖于 HSL 到 RGB 的转换器,我发现它是 on this post .这最终给了我一个非常好的结果:

Red to green heatmap using PHP

谢谢您的帮助。

关于PHP 红到绿 RGB 颜色热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35848025/

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