5

根据http://www.workwithcolor.com/color-luminance-2233.htm,RED (#FF0000) 的亮度为:54%。浅粉色 (#FF8080) 的亮度为:89%。我们的设计师喜欢它,但它是如何确定的?在这里试试:http ://www.workwithcolor.com/hsl-color-schemer-01.htm

我尝试使用W3C 发布的相对亮度公式,虽然范围是 [0,1],但红色是0.21,白色是1.00

我在想,也许 workwithcolor 所做的是首先将颜色转换为灰度,然后读取灰度的亮度。我试过了,但它仍然没有给出相同的结果。

到目前为止我已经尝试过:http: //jsfiddle.net/HytZQ/

4

2 回答 2

3

在此处查看公式: 确定 RGB 颜色亮度的公式

Luminance (standard, objective): (0.2126*R) + (0.7152*G) + (0.0722*B)

设 R=255,G=B=0,你会得到 54

编辑: 对于相对亮度,除以最大值 (255) 得到 21%

对于白色,你得到 100%

于 2013-10-30T17:54:59.407 回答
2

亮度、亮度和亮度不是一回事。HSL 颜色模型可以很好地理解其中一个组件是 L(亮度)。

根据您的要求,亮度不是您应该关心的东西。请阅读链接中的讨论:

http://www.cambridgeincolour.com/forums/thread23366.htm

RED (#FF0000) 在 100% 饱和度下的亮度为 50%,但我们使用的软件程序会稍微调整值以考虑感知因素。

你需要的是从纯色开始。纯色是 HSL 颜色空间中的颜色,其亮度为 50%,饱和度为 100%,更改色调的值可以为您提供纯色。通过 HSL/RGB 颜色空间共有 6*60 纯色可用。即,如果您将使用以下组合生成的颜色相加,您将获得 360 种纯色。

R=255*(x/60),G=0,B=255;其中 x 从 0 变为 60 R=255*(x/60), G=255, B=0; 其中 x 从 0 变为 60

R=255,G=255*(x/60),B=0;其中 x 从 0 变为 60 R=0, G=255*(x/60), B=255;其中 x 从 0 变为 60

R=255,G=0,B=255*(x/60);其中 x 从 0 变为 60 R=0, G=255, B=255*(x/60); 其中 x 从 0 变为 60

我们看到的所有颜色都是对饱和度和亮度的控制。

现在,要获取灰度图像:

1 - 您可以使用 Jerry 建议的亮度公式(还有一些其他公式可以获得更好的性能)。2 - 您可以在 HSL 颜色空间中将饱和度更改为 0%,这正是http://www.workwithcolor.com/hsl-color-schemer-01.htm所做的。

于 2013-11-13T14:23:18.410 回答