十六进制颜色 - 使其更亮的配方

时间:2009-08-23 00:55:49

标签: colors hex

我可以使用一个公式来使十六进制颜色值更亮吗?

3 个答案:

答案 0 :(得分:17)

您可以转换为HSV(使用维基百科here中的公式)然后增加 V 值,然后使用同一页面下方的公式转换回来。

答案 1 :(得分:8)

标准答案是转换为亮度为一个轴的不同颜色空间,然后直接操作该值。我不喜欢这个答案,因为它没有告诉你超出色域空间时会得到什么。

如果更亮你意味着更强烈,你可以将每个R,G,B值乘以相同的值,其中该值是> 1.例如,要使其亮度增加20%,请将每个值乘以1.2。

如果任何结果值大于255,则表示您已超出RGB色域的限制。在这种情况下,最好的做法是使颜色更接近白色,因此它更轻但饱和度更低或更强烈。让我们以(50,192,240)的起始RGB为例,让你想要亮20%。结果是(60,230,288) - 红色和绿色在界限范围内,但蓝色太亮并且溢出。取出多余的颜色并将其平均分配给其他颜色 - 288-255是33,所以在红色和绿色中添加16.5;舍入给你一个(77,247,255)的结果。

答案 2 :(得分:-1)

很好看,颜色只有3个字节的r / g / b,你可以做的是将每个字节转换为int(0-255)并将每个字节增加相同的任意数。通过将每个字节转换回十六进制来完成。例如:

从颜色开始:#224466

转换为r = 34g = 68b = 102

的整数

r = 94g = 128b = 162

增加任意数字(比如60)

转换回十六进制为您提供:#5E80A2

请注意,上限为255(白色),下限为0(黑色)

编辑:正如马克所指出的,这是一个缺陷。它可以通过一个附加规则来修复:如果初始值为0,则不要更改它;)