Colors 六边形颜色-使其成为Britter的配方

Colors 六边形颜色-使其成为Britter的配方,colors,hex,Colors,Hex,有没有一个公式可以用来使十六进制颜色值更亮?你可以转换成HSV(使用维基百科的公式),然后增加V值,然后再转换回来,用同一页上的下半部分的公式。因为颜色只有3个字节的r/g/b,你可以做的是将每个字节转换成一个int(0-255)并将每个字节增加相同的任意数。最后将每个字节转换回十六进制。例如: 从颜色开始:224466 转换为整数,即r=34,g=68和b=102 按任意数字递增(比如60),得到r=94,g=128和b=162 转换回十六进制将为您提供:#5E80A2 请注意,上限为255(

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

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

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

从颜色开始:
224466

转换为整数,即
r=34
g=68
b=102

按任意数字递增(比如60),得到
r=94
g=128
b=162

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

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


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

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

如果越亮意味着越强烈,你可以用相同的值乘以每个R,G,B值,其中该值大于1。例如,要使其亮20%,请将每个值乘以1.2


如果任何结果值大于255,则表示您已超出RGB色域的限制。在这种情况下,最好的办法可能是使颜色更接近白色,因此颜色更浅,但不太饱和或强烈。让我们以(50192240)的起始RGB为例,希望使其亮度增加20%。结果是(60230288)-红色和绿色在范围内,但蓝色太亮,已经溢出。把多余的部分平均分配到其他颜色上——288-255是33,所以红色和绿色加上16.5;四舍五入的结果是(77247255)。

这会改变颜色,依我看。要扩展克丽索的评论,想象一种颜色#800000,一种深而强烈的红色。用这种方式使它变亮会产生#ff7f7f,更接近粉红色而不是红色。在这个色域中有1600万种颜色。更改任何值都会更改“颜色”。我认为这可能意味着它改变了r/g/b比率,这只是单一维度“颜色”的任意轴。Mark Ransom,你刚刚提出了一个著名的要求,要求浅红色,但不是粉色……新规则没有帮助。想象一下从80001英镑开始,而不是800000英镑。谢谢你提醒我注意这个问题。把[0255]映射到[o,inf],相乘,然后映射回[0255]怎么样?这可以避免色域问题,但我想你会得到不同的色调和饱和度结果,这取决于你使用的贴图…@NOTT101,这与简单地将结果限制在255是一样的。这是一个可行的策略,但我认为我的更好。此外,你如何扩展到无穷大?嗯..tan((pi/2)*x/255)?(技术上没有定义为x=255,所以你可能想除以256或255.0001或其他东西)。有很多是相反的,我认为它们在这个区间上都有倒数(尽管可能没有一个好的易于使用的代数倒数)@NOTT101对于另一个问题,我有一个类似的答案,我留下了一些代码来处理色域外的情况。它工作得很好。或者使用
http://www.rapidtables.com/convert/color/rgb-to-hsv.htm
。反向转换器也在那里。记住-它是
,HSV增加的第三部分。对我来说第一个似乎是自然使用的。