考虑这两个粉红色的方块:
而且:
您可能知道,一个更轻,一个更暗或更尖锐。 问题是,我可以通过人眼看出来,但这是否可以使用系统方式或程序方式来检测这些信息?至少,这可能有一个值告诉我颜色更像是白色还是颜色不像白色? (假设我得到了那种颜色的RGB代码。)谢谢。
答案 0 :(得分:4)
由于您没有指定任何特定的语言/脚本来检测更暗/更浅的十六进制,我想为此提供一个PHP解决方案
$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;
}
答案 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'