这可能是检测颜色是浅色还是深色?

时间:2014-03-24 07:38:42

标签: javascript php colors comparison

考虑这两个粉红色的方块:

enter image description here

而且:

enter image description here

您可能知道,一个更轻,一个更暗或更尖锐。 问题是,我可以通过人眼看出来,但这是否可以使用系统方式或程序方式来检测这些信息?至少,这可能有一个值告诉我颜色更像是白色还是颜色不像白色? (假设我得到了那种颜色的RGB代码。)谢谢。

2 个答案:

答案 0 :(得分:4)

由于您没有指定任何特定的语言/脚本来检测更暗/更浅的十六进制,我想为此提供一个PHP解决方案

Demo

$color_one = "FAE7E6"; //State the hex without #
$color_two = "EE7AB7";

function conversion($hex) {
    $r = hexdec(substr($hex,0,2)); //Converting to rgb
    $g = hexdec(substr($hex,2,2));
    $b = hexdec(substr($hex,4,2));

    return $r + $g + $b; //Adding up the rgb values
}

echo (conversion($color_one) > conversion($color_two)) ? 'Color 1 Is Lighter' : 'Color 1 Is Darker';
//Comparing the two converted rgb, the greater one is darker

正如@Some Guy指出的那样,我修改了我的功能以产生更好/更准确的结果...... (添加亮度)

function conversion($hex) {
    $r = 0.2126*hexdec(substr($hex,0,2)); //Converting to rgb and multiplying luminance
    $g = 0.7152*hexdec(substr($hex,2,2));
    $b = 0.0722*hexdec(substr($hex,4,2));

    return $r + $g + $b;
}

Demo 2

答案 1 :(得分:0)

下面是确定浅色或深色的Python代码。该公式基于HSP值。 http://alienryderflex.com/hsp.html中的HSP(高度敏感Poo)方程式用于确定颜色是浅色还是深色。

import math
def isLightOrDark(rgbColor=[0,128,255]):
    [r,g,b]=rgbColor
    hsp = math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))
    if (hsp>127.5):
        return 'light'
    else:
        return 'dark'