根据 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/
在这里检查公式: 决定RGB颜色亮度的公式
Luminance (standard, objective): (0.2126*R) + (0.7152*G) + (0.0722*B)
R=255,G=B=0,你会得到54
编辑: 对于相对亮度,除以最大值 (255) 你得到 21%
对于白色,你得到 100%
Luminance, Luminosity 和 Brightness 不是一回事。 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 - 您可以使用杰里建议的亮度公式(还有一些其他公式可以提高性能)。 2 - 您可以在 HSL 颜色空间中将饱和度更改为 0%,这正是 http://www.workwithcolor.com/hsl-color-schemer-01.htm 所做的。
获得它们显示的值的一种方法是将颜色从 sRGB 转换为 CIE-XYX,然后从 CIE-XYZ 转换为 L*a*b*(或 CIELAB)
在 CIELAB 中,L* 被描述为感知亮度,即页面显示为亮度的值。
我在这里回答了同样的事情,因为这两个问题似乎是一样的