我可以使用一个公式来使十六进制颜色值更亮吗?
答案 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 = 34
,g = 68
和b = 102
以r = 94
,g = 128
和b = 162
转换回十六进制为您提供:#5E80A2
请注意,上限为255(白色),下限为0(黑色)
编辑:正如马克所指出的,这是一个缺陷。它可以通过一个附加规则来修复:如果初始值为0,则不要更改它;)