加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

计算PHP中两种颜色之间的平均颜色,使用索引号作为参考值

发布时间:2020-12-13 16:41:01 所属栏目:PHP教程 来源:网络整理
导读:在 PHP中,我试图计算出不同的十六进制颜色之间的平均颜色(十六进制).但是,我还需要提供0.0到1.0之间的索引号. 所以例如: 我有 $color1 = "#ffffff" $color2 = "#0066CC" 如果我要写一个函数来获得平均颜色,我将提供0.0作为索引号,该函数需要返回“#ffffff”
在 PHP中,我试图计算出不同的十六进制颜色之间的平均颜色(十六进制).但是,我还需要提供0.0到1.0之间的索引号.

所以例如:

我有

$color1 = "#ffffff" 
$color2 = "#0066CC"

如果我要写一个函数来获得平均颜色,我将提供0.0作为索引号,该函数需要返回“#ffffff”.如果我提供1.0作为索引号,则该函数需要返回“#0066CC”.但是如果我提供0.2,这个函数需要返回两种颜色之间的平均颜色,但是比$color2更接近$color1.如果我提供的索引号为0.5,我会得到两种颜色的确切的平均颜色.

我一直在试图完成这几天,但我似乎无法弄清楚!任何帮助将会非常感激!

我们假设为了讨论的目的,每个颜色都有一个“值”.那么,你想要的就足够简单:
$index = 0.2;
$val1 = get_value_of_color($color1);
$val2 = get_value_of_color($color2);
$newval = $val1 * $index + $val2 * (1 - $index);
$newcolor = get_color_from_value($newval);

所以,很难找出每种颜色的“价值”.

您可以使用简单的RGB值,其中每个颜色的“值”是一组三个整数:

function get_value_of_color($color) {
    // assume $color is in the form #xxxxxx
    return array(
        hexdec(substr($color,1,2)),hexdec(substr($color,3,5,);
}

function get_color_from_value($value) {
    return sprintf('#%02x%02x%02x',$value[0],$value[1],$value[2]);
}

这里需要在每个阵列元素上进行乘法和加法.我认为在这一点上,应该很容易使一个简单的使用功能来混合自己的颜色.

如果这不是您需要的,那么您可以使用HSL值或其他更适合您的应用程序的指标.这个想法会保持不变.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读