基于数字的颜色编码

Qui*_*cky 10 php colors

我想在红色,黄色,绿色之间显示颜色,具体取决于1到100之间的数字.

1为绿色,100为红色,50为黄色.我想基本上在它之间创建一个渐变.

到目前为止,我尝试过:

$r = floor(255 * ($number / 100));
$g = 255 - $r;
Run Code Online (Sandbox Code Playgroud)

它有点像它,但给我棕色和深色,并且没有黄色.

Cze*_*ogy 11

这是因为你不应该同时改变两个通道,而是在前半部分升高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";
}
Run Code Online (Sandbox Code Playgroud)

测试它:

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