加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP中的颜色之间的“距离”

发布时间:2020-05-25 09:54:40 所属栏目:PHP 来源:互联网
导读:我正在寻找一个功能,可以准确地表示两种颜色之间的距离作为数字或东西. 例如,我正在寻找一个数组的十六进制值或RGB数组,我想找到一个给定的颜色在数组中最相似的颜色 例如.我传递一个RGB值的函数,并返回数组中最接近的颜色 每个颜色表示为十六进制代码中的元

我正在寻找一个功能,可以准确地表示两种颜色之间的距离作为数字或东西.

例如,我正在寻找一个数组的十六进制值或RGB数组,我想找到一个给定的颜色在数组中最相似的颜色

例如.我传递一个RGB值的函数,并返回数组中最接近的颜色

每个颜色表示为十六进制代码中的元组.要确定近距离匹配,您需要分别减去每个RGB组件.

例:

Color 1: #112233 
Color 2: #122334
Color 3: #000000

Difference between color1 and color2: R=1,G=1   B=1  = 0x3 
Difference between color3 and color1: R=11,G=22,B=33 = 0x66

So color 1 and color 2 are closer than
1 and 3.

编辑

那么你想要最接近的命名颜色?使用每种颜色的十六进制值创建一个数组,然后循环并返回名称.这样的东西

function getColor($rgb)
{
    // these are not the actual rgb values
    $colors = array(BLUE =>0xFFEEBB,RED => 0x103ABD,GREEN => 0x123456);

    $largestDiff = 0;
    $closestColor = "";
    foreach ($colors as $name => $rgbColor)
    {
        if (colorDiff($rgbColor,$rgb) > $largestDiff)
        {
            $largestDiff = colorDiff($rgbColor,$rgb);
            $closestColor = $name;
        }

    }
    return $closestColor;

}

function colorDiff($rgb1,$rgb2)
{
    // do the math on each tuple
    // could use bitwise operates more efficiently but just do strings for now.
    $red1   = hexdec(substr($rgb1,2));
    $green1 = hexdec(substr($rgb1,2,2));
    $blue1  = hexdec(substr($rgb1,4,2));

    $red2   = hexdec(substr($rgb2,2));
    $green2 = hexdec(substr($rgb2,2));
    $blue2  = hexdec(substr($rgb2,2));

    return abs($red1 - $red2) + abs($green1 - $green2) + abs($blue1 - $blue2) ;

}

(编辑:安卓应用网)

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

    推荐文章
      热点阅读