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

javascript – 根据HEX背景获得白色/黑色

发布时间:2021-08-28 03:47:02 所属栏目:大数据 来源: https://www.jb51.cc
导读:我有这个Javascript函数,根据背景的给定HEX颜色获得正确的文本颜色(白色或黑色),效果很好: // Ideal colorfunction getRGBComponents(color) { var r = color.substring(1, 3), g = color.substring(3, 5), b = color.substring(5, 7); return { R: parseIn

我有这个Javascript函数,根据背景的给定HEX颜色获得正确的文本颜色(白色或黑色),效果很好:

// Ideal color
function getRGBComponents(color) {
    var r = color.substring(1, 3),
        g = color.substring(3, 5),
        b = color.substring(5, 7);
    return {
        R: parseInt(r, 16),
        G: parseInt(g, 16),
        B: parseInt(b, 16)
    };
}
function idealTextColor(bgColor) {
    if (bgColor.length === 4) {
        bgColor = '#' + bgColor[1] + bgColor[1] + bgColor[2] + bgColor[2] + bgColor[3] + bgColor;
    }
    var nThreshold = 105,
        components = getRGBComponents(bgColor),
        bgDelta = (components.R * 0.299) + (components.G * 0.587) + (components.B * 0.114);
    return ((255 - bgDelta) < nThreshold) ? "#000000" : "#ffffff";
}

idealTextColor("#123123");

我把它转换为PHP:

// Ideal color
function getRGBComponents($color) {
    $r = substr($color, 1, 3);
    $g = substr($color, 3, 5);
    $b = substr($color, 5, 7);
    return Array(
        "R" => intval($r, 16),
            "G" => intval($g, 16),
            "B" => intval($b, 16)
        );
}
function idealTextColor($bgColor) {
    if (strlen($bgColor) == 4) {
        $bgColor = '#' . $bgColor[1] . $bgColor[1] . $bgColor[2] . $bgColor[2] . $bgColor[3] . $bgColor[3];
    }
    $nThreshold = 105;
    $components = getRGBComponents($bgColor);
    $bgDelta = ($components["R"] * 0.299) + ($components["G"] * 0.587) + ($components["B"] * 0.114);

    if((255 - $bgDelta) < $nThreshold) {
        return "#000000";
    } else {
        return "#FFFFFF";
    }
}

idealTextColor("#123123");

它不起作用,它总是#00000作为颜色(FIDDLE).我该如何修复它再次起作用?或者也许某人有更好的功能来执行相同的任务?

解决方法:

$r = substr($color, 1, 2);
$g = substr($color, 3, 2);
$b = substr($color, 5, 2);

substr的第二个参数是length,而不是end index.

(编辑:北几岛)

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

    推荐文章
      热点阅读