计算颜色阴影

4
我有一个问题。我有一个基础颜色,其中有几个不同的阴影色。
例如:
  • 基础颜色:#4085c5
  • 阴影色:#005cb1
现在,我有一种不同的颜色(比如说#d60620),但它没有任何阴影。我想计算出与第一个段落中提到的颜色具有类似差异的阴影。
首先,我尝试计算RGB元素的差异并将其应用于第二个颜色,但结果不像我预期的那样。然后,我尝试将颜色转换为HSV,读取饱和度值,并将差异应用于第二个颜色,但生成的颜色仍然很奇怪。
公式大致如下:(HSV(基础颜色)[S] - HSV(阴影色)[S]) + HSV(第二个颜色)[H] 是否有人知道如何解决这个问题?我知道我做错了什么,但我不知道是什么。:)

请参考以下类似问题:http://stackoverflow.com/questions/5367909/get-color-shade-with-php,https://dev59.com/MHI-5IYBdhLWcg3wm5lG和https://dev59.com/Lmw15IYBdhLWcg3wbbRx。这些问题与编程有关。 - ficuscr
2个回答

4
有两种方法可以使颜色变暗:
  • 从R、G、B中减去相等的量。这会增加饱和度。显然,你只能减去R、G、B值中最小的那个值。
  • 将R、G、B乘以小于1.0的值。这样可以保持饱和度不变或稍微降低它。
类似地,有两种方法可以使颜色变浅:
  • 向R、G、B中添加相同的量。这会降低饱和度。
  • 将R、G、B乘以大于1.0的值。这会增加颜色的鲜艳程度,从而增加表面饱和度。
你的示例似乎已经使用了两种方法-从每个值中减去了0x40,并乘以1.33。
使用你的第二个颜色,我们可以从每个值中减去06,结果为#d0000a,但这并不够暗。将其乘以0.735的结果为#990013。

enter image description here


1

你的前两种颜色都有一个“H”(色相)值为209,而“S”和“V”的值不同。

这个共同的色相是定义第二种颜色为第一种颜色的“阴影”的特征。

要找到第三种颜色的替代阴影,请使用RGB到HSV转换来查找其色相,根据需要修改其S和V值,然后再转换回RGB。


虽然您的解决方案是正确的,但定义略有不同:阴影通常被定义为比基色更暗(例如,海军蓝是蓝色的一种阴影)。在HSV空间中,这意味着V值的减少。 - ssube

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接