Php 基于数字的颜色编码

Php 基于数字的颜色编码,php,colors,Php,Colors,我想根据1到100之间的数字显示红色、黄色和绿色之间的颜色 1为绿色,100为红色,50为黄色。我想在这两者之间创建一个渐变 到目前为止,我试过: $r = floor(255 * ($number / 100)); $g = 255 - $r; 它有点像,但给我棕色和深色,一点黄色都没有。我发现处理问题比处理问题容易。它可以帮助您轻松选择想要使用的颜色;使用RGB时,您需要了解R、G和B的不同值如何组合,以提供您想要/不想要的颜色 另外,这个问题可能很有用:这是因为你不应该同时改变两个通道,

我想根据1到100之间的数字显示红色、黄色和绿色之间的颜色

1为绿色,100为红色,50为黄色。我想在这两者之间创建一个渐变

到目前为止,我试过:

$r = floor(255 * ($number / 100));
$g = 255 - $r;

它有点像,但给我棕色和深色,一点黄色都没有。

我发现处理问题比处理问题容易。它可以帮助您轻松选择想要使用的颜色;使用RGB时,您需要了解R、G和B的不同值如何组合,以提供您想要/不想要的颜色


另外,这个问题可能很有用:

这是因为你不应该同时改变两个通道,而应该在前半部分提高R,在后半部分降低G

尝试以下函数:

function GreenYellowRed($number) {
  $number--; // working with 0-99 will be easier

  if ($number < 50) {
    // green to yellow
    $r = floor(255 * ($number / 50));
    $g = 255;

  } else {
    // yellow to red
    $r = 255;
    $g = floor(255 * ((50-$number%50) / 50));
  }
  $b = 0;

  return "$r,$g,$b";
}
要测试它,请执行以下操作:

$output = "";
for ($i = 1; $i <= 100; $i++) {
  $rgb = GreenYellowRed($i);
  $output .= "<div style='background-color: rgb($rgb)'>$rgb</div>";
}
echo $output;

我不知道通过指定RGB颜色值的颜色曲线的数学模型,例如,您所描述的绿色/黄色/红色,它允许您计算该曲线中的任何中间颜色。在任何情况下,一个函数的模型都只是它需要拟合的数据点,所以你必须比绿/黄/红更具体,才能得到好的结果,即使有人指出了数学问题

记住,这里我们对数学插值不感兴趣,而是对颜色空间插值感兴趣,这是我刚刚编出来的一个术语——换句话说,对人类来说,这是一种自然的插值

对于我们这些没有必要的颜色理论知识的人来说,一个更简单的解决方案是使用颜色选择器工具预先选择一些颜色,将0-100范围划分为与所选颜色相同的多个色带,并使用简单的整数分割从0-100投影到一个色带

值得思考的是:事实上,这是如何决定向上投票的颜色的


更新:我只是在上面的元。让我们看看……

看了一会儿,没有一个解决方案看起来令人满意。如上所述,HSV可能是一个不错的选择,因为现代浏览器可以用它来渲染颜色

要了解您使用的颜色,请查看此色轮:

我想从蓝色开始,所以我使用255进行规范化

function temp_color($temp){

    $start = 40;
    $end = 85;

    $normal = round(255-((($temp - $start)/($end-$start))*255));

    $color = "hsl($normal, 100%, 30%);";
    $span = "<span style=\"color: $color\">$temp</span>";

    return $span;
}   

那么,如何决定向上投票的颜色?魔术可能的重复与一些小的调整,这里是一个小提琴测试。。。我花了很长时间才找到这样的解决办法。结果是这样的。现在制作一个永久的CSS文件。助教@奥利维尔·庞斯:我不知道你为什么要把它贴在这里,它只是按照OP的惯例。