gpt4 book ai didi

php - 在 PHP 中插值颜色

转载 作者:行者123 更新时间:2023-11-28 01:49:25 25 4
gpt4 key购买 nike

我是一名 C++ 程序员,最近开始研究使用 PHP、Javascript 和 HTML 进行网络开发。目前我遇到了一些应该非常简单的事情,但没有按我预期的那样工作......

function interpolateColor($corA, $corB, $lerp)
{
$redA = $corA & 0xFF0000;
$greenA = $corA & 0x00FF00;
$blueA = $corA & 0x0000FF;
$redB = $corB & 0xFF0000;
$greenB = $corB & 0x00FF00;
$blueB = $corB & 0x0000FF;

$redC = $redA + (($redB - $redA) * $lerp);
$greenC = $greenA + (($greenB - $greenA) * $lerp);
$blueC = $blueA + (($blueB - $blueA) * $lerp);

return $redC | $greenC | $blueC;
}

我一直在尝试使用此函数根据“优先级”列的值使 HTML 表格的行具有不同的颜色,该值从 0 到 10,除以 10 形成“lerpAmount” (0-1) 变量。

$cor = interpolateColor(0xFF0000, 0x0000FF, $lerpAmount);

<tr bgcolor="<?=$cor?>">

但是我得到的颜色看起来不像红蓝插值...它开始是蓝色的,然后只有一行是绿色的,然后它变成粉红色并插值到某种形式的棕色,然后变成深蓝色再次,这让我觉得有些地方很不对劲。

提前致谢。

最佳答案

您必须在结果颜色和蒙版之间执行按位与运算:

$redC = $redA + (($redB - $redA) * $lerp) & 0xFF0000;         // Only Red
$greenC = $greenA + (($greenB - $greenA) * $lerp) & 0x00FF00; // Only Green
$blueC = $blueA + (($blueB - $blueA) * $lerp) & 0x0000FF; // Only Blue

要获得正确的 RGB 值,然后返回十六进制颜色,您必须使用以下方法进行转换:

$result = dechex($redC | $greenC | $blueC);
return str_pad($result, 6, "0", STR_PAD_LEFT);

(str_pad 是为返回的颜色添加前导零)。

关于php - 在 PHP 中插值颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20903106/

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