NodeJS 六角色-配方,使其更明亮

628mspwn  于 2023-02-03  发布在  Node.js
关注(0)|答案(4)|浏览(95)

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

ulmd4ohb

ulmd4ohb1#

你可以转换成HSV(使用维基百科的公式),然后增加V值,然后转换回来,使用同一页上的公式。

kdfy810k

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)。

fgw7neuy

fgw7neuy3#

如果你使用的是VS代码,有一个快速的破解方法。只要将鼠标悬停在颜色十六进制上,你就会看到一个颜色选择器弹出窗口。

单击顶部区域将颜色从十六进制表示法更改为hsla、rgba等。转换为hsl/hsla表示法,如下所示。

现在根据你的要求改变亮度(hsl/hsla函数中的第三个参数),一旦你对高度级别满意,将鼠标悬停在颜色(现在是hsl符号)上,点击颜色选择器弹出窗口的标题区域将其转换回十六进制。
注意:请不要混淆上面两张截图中使用的不同颜色,每张截图对应同一个css文件中的不同颜色。

nfs0ujit

nfs0ujit4#

颜色只是r/g/b的3个字节,你可以把每个字节转换成int(0-255),然后把每个字节增加一个相同的任意数,最后把每个字节转换回十六进制。例如:
从颜色开始:#224466
转换为整数r = 34g = 68b = 102
以任意数字(比如60)递增,得到r = 94g = 128b = 162
转换回十六进制可获得:#5E80A2
请注意,上限为255(白色),下限为0(黑色)

**EDIT:**正如Mark指出的,这有一个缺陷。它可以通过一个附加规则来修复:如果初始值为0,则不更改;)

相关问题