计算颜色深浅

时间:2012-10-05 17:51:29

标签: php algorithm colors

我有下一个问题。
我有一种基色,有几种不同色调的颜色。

示例:

  • 基色:#4085c5
  • Shade:#005cb1

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

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

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

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

2 个答案:

答案 0 :(得分:3)

有两种方法可以使颜色变暗:

  • 从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 :(得分:1)

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

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

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