如何确定亮度百分比?

6
根据http://www.workwithcolor.com/color-luminance-2233.htm,红色(#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/

以下是维基百科关于相对亮度的介绍:http://en.wikipedia.org/wiki/Luminance_(relative)。 - mbeckish
发现了这个JS库,可以执行Luminance()函数 http://tech.pusherhq.com/libraries/color,基于W3C CSS颜色定义。 - Henry
我喜欢你链接中展示的结果。它们似乎没有使用任何常用的转换方法。 - Mark Ransom
3个回答

6

在这里检查公式:计算RGB颜色亮度的公式

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

将R设为255,G和B设为0,你会得到54

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

对于白色,你会得到100%


谢谢Jerry,我认为你是对的,但是我在问题中发布的workwithcolor链接中的亮度%似乎在做不同的事情。所以虽然你是对的,但我认为我问错了问题。谢谢! - Henry
不知何故,workwithcolor的公式会返回红色的Lum 54%,浅粉色的89%,以及白色的100%。相对亮度公式只能返回红色为21%和白色为100%,或红色为54%和白色为255%。 - Henry

3
亮度、光度和亮度不是同一回事。HSL颜色模型非常适合理解其中一个组成部分是L(亮度)的情况。
根据您的要求,亮度不是您需要关心的问题。请阅读链接中的讨论:

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

红色 (#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所做的。


0

这些问题很相似, 所以我在两个帖子上发布了同样的答案。

获取它们所显示的值的方法是将颜色从sRGB转换为CIE-XYZ,然后从CIE-XYZ转换为L*a*b*(或CIELAB)

在CIELAB中,L*被描述为感知亮度,这就是页面显示为亮度的值。

您可以使用以下方程式快速计算此值,请记住RGB值必须进行归一化(值从0到1):

Equations

这里是使用颜色亮度解释上的颜色,对比本算法(L*)和页面上的算法(Lum.)的比较。

颜色 L* [%] Lum. [%]
#FF0000 53.232881... 54 (53.77)
#FF8000 67.050096... 65 (65.06)
#FFFF00 97.138246... 94 (93.63)
#80FF00 89.910015... 83 (82.96)
#00FF00 87.737033... 80 (79.52)
#00FF80 88.485146... 82 (81.63)
#00FFFF 91.116521... 87 (87.44)
#0080FF 54.718662... 57 (57.36)
#0000FF 32.302586... 44 (43.95)
#8000FF 40.911243... 52 (51.51)
#FF00FF 60.319933... 70 (70.28)
#FF0080 54.884906... 60 (59.59)

对于 #FF8080,我得到了 %68.209498...(页面显示为 %69 (%68.60)),但你说该值为 %89,我猜这是打错字了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接