【问题标题】:Calculating color shades计算颜色深浅
【发布时间】:2012-09-26 22:05:19
【问题描述】:

我有下一个问题。
我有一个带有几种不同深浅的基色。

示例:

  • 底色:#4085c5
  • 阴影:#005cb1

现在,我有了不同的颜色(比如说#d60620),但没有阴影。从颜色我想计算阴影,与第一段中提到的颜色有相似的差异。

首先我尝试计算 RGB 差异 元素并将它们应用于第二种颜色,但结果与我预期的不同。
比我尝试将颜色转换为 HSV、读取 饱和度值并将差异应用于第二种颜色,但结果颜色仍然很奇怪。

公式类似于:(HSV(BaseColor)[S] - HSV(Shade)[S]) + HSV(SecondColor)[H]

有谁知道如何解决这个问题?我知道我做错了什么,但我不知道是什么。 :)

【问题讨论】:

标签: php algorithm colors


【解决方案1】:

有两种方法可以加深颜色:

  • 从 R、G、B 中减去等量。这增加了饱和度。显然,您只能减去等于 R、G、B 值中最小值的 mount。
  • 将 R、G、B 乘以小于 1.0 的值。这使饱和度或多或少完好无损。

同样,有两种方法可以使颜色变亮:

  • 将等量添加到 R、G、B 中。这会降低饱和度。
  • 将 R、G、B 乘以大于 1.0 的值。这会增加颜色的鲜艳度,从而增加明显的饱和度。

您的示例似乎已经完成了这两项工作 - 从每个值中减去 0x40 并乘以 1.33。

使用您的第二种颜色,我们可以从每种颜色中减去 06,从而得到 #d0000a,但这还不够暗。将其乘以 0.735 得到 #990013。

【讨论】:

    【解决方案2】:

    前两种颜色的“H”(色调)值均为 209,“S”和“V”的值各不相同。

    这种常见的色调将第二种颜色定义为第一种颜色的“阴影”。

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

    【讨论】: