有没有一个公式可以用来使十六进制颜色值更亮?
ulmd4ohb1#
你可以转换成HSV(使用维基百科的公式),然后增加V值,然后转换回来,使用同一页上的公式。
kdfy810k2#
标准的答案是转换到一个不同的颜色空间,亮度作为一个轴,然后直接操纵该值。我不喜欢这个答案,因为它没有告诉你当你超出颜色空间色域时会得到什么。如果更亮是指更强烈,则可以将每个R、G、B值乘以相同的值,其中该值〉1。例如,要使其亮20%,请将每个值乘以1.2。如果任何一个结果值大于255,你已经超出了RGB色域的限制。在这种情况下,最好的办法可能是使颜色更接近白色,这样颜色会更浅,但饱和度或强度会更低。让我们以(50,192,240),您希望使亮度提高20%。结果为(60,230,288)-红色和绿色在界限内,但蓝色太亮,已经溢出。取多余的部分,平均分配给其他颜色- 288-255是33,红色和绿色加16.5四舍五入的结果为(77,247,255)。
fgw7neuy3#
如果你使用的是VS代码,有一个快速的破解方法。只要将鼠标悬停在颜色十六进制上,你就会看到一个颜色选择器弹出窗口。
单击顶部区域将颜色从十六进制表示法更改为hsla、rgba等。转换为hsl/hsla表示法,如下所示。
现在根据你的要求改变亮度(hsl/hsla函数中的第三个参数),一旦你对高度级别满意,将鼠标悬停在颜色(现在是hsl符号)上,点击颜色选择器弹出窗口的标题区域将其转换回十六进制。注意:请不要混淆上面两张截图中使用的不同颜色,每张截图对应同一个css文件中的不同颜色。
hsl
hsla
nfs0ujit4#
颜色只是r/g/b的3个字节,你可以把每个字节转换成int(0-255),然后把每个字节增加一个相同的任意数,最后把每个字节转换回十六进制。例如:从颜色开始:#224466转换为整数r = 34、g = 68和b = 102以任意数字(比如60)递增,得到r = 94、g = 128和b = 162转换回十六进制可获得:#5E80A2请注意,上限为255(白色),下限为0(黑色)
#224466
r = 34
g = 68
b = 102
r = 94
g = 128
b = 162
#5E80A2
**EDIT:**正如Mark指出的,这有一个缺陷。它可以通过一个附加规则来修复:如果初始值为0,则不更改;)
4条答案
按热度按时间ulmd4ohb1#
你可以转换成HSV(使用维基百科的公式),然后增加V值,然后转换回来,使用同一页上的公式。
kdfy810k2#
标准的答案是转换到一个不同的颜色空间,亮度作为一个轴,然后直接操纵该值。我不喜欢这个答案,因为它没有告诉你当你超出颜色空间色域时会得到什么。
如果更亮是指更强烈,则可以将每个R、G、B值乘以相同的值,其中该值〉1。例如,要使其亮20%,请将每个值乘以1.2。
如果任何一个结果值大于255,你已经超出了RGB色域的限制。在这种情况下,最好的办法可能是使颜色更接近白色,这样颜色会更浅,但饱和度或强度会更低。让我们以(50,192,240),您希望使亮度提高20%。结果为(60,230,288)-红色和绿色在界限内,但蓝色太亮,已经溢出。取多余的部分,平均分配给其他颜色- 288-255是33,红色和绿色加16.5四舍五入的结果为(77,247,255)。
fgw7neuy3#
如果你使用的是VS代码,有一个快速的破解方法。只要将鼠标悬停在颜色十六进制上,你就会看到一个颜色选择器弹出窗口。
单击顶部区域将颜色从十六进制表示法更改为hsla、rgba等。转换为hsl/hsla表示法,如下所示。
现在根据你的要求改变亮度(
hsl
/hsla
函数中的第三个参数),一旦你对高度级别满意,将鼠标悬停在颜色(现在是hsl符号)上,点击颜色选择器弹出窗口的标题区域将其转换回十六进制。注意:请不要混淆上面两张截图中使用的不同颜色,每张截图对应同一个css文件中的不同颜色。
nfs0ujit4#
颜色只是r/g/b的3个字节,你可以把每个字节转换成int(0-255),然后把每个字节增加一个相同的任意数,最后把每个字节转换回十六进制。例如:
从颜色开始:
#224466
转换为整数
r = 34
、g = 68
和b = 102
以任意数字(比如60)递增,得到
r = 94
、g = 128
和b = 162
转换回十六进制可获得:
#5E80A2
请注意,上限为255(白色),下限为0(黑色)
**EDIT:**正如Mark指出的,这有一个缺陷。它可以通过一个附加规则来修复:如果初始值为0,则不更改;)