Php 计算色度

Php 计算色度,php,algorithm,colors,Php,Algorithm,Colors,我有下一个问题。 我有一个基色和两个不同的色调 示例: 底色:#4085c5 阴影:#005cb1 现在,我有了一种不同的颜色(比如说#d60620),但没有深浅的颜色。从颜色,我想计算阴影,有类似的差异,在第一段中提到的颜色 首先,我尝试计算RGB元素的差异,并将其应用于第二种颜色,但结果与我预期的不同。 比我试着用将颜色转换为HSV,读取饱和度值,然后将差值应用到第二种颜色,但结果仍然很奇怪 公式是这样的:(HSV(基色)[S]-HSV(阴影)[S])+HSV(第二色)[H] 有人知道如

我有下一个问题。
我有一个基色和两个不同的色调

示例:

  • 底色:#4085c5
  • 阴影:#005cb1
现在,我有了一种不同的颜色(比如说#d60620),但没有深浅的颜色。从颜色,我想计算阴影,有类似的差异,在第一段中提到的颜色

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

公式是这样的:(HSV(基色)[S]-HSV(阴影)[S])+HSV(第二色)[H]


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

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

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


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

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

  • 从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


请参阅类似帖子:,虽然您的解决方案是正确的,但定义有点偏离:(例如,海军蓝是蓝色的阴影)。在HSV空间中,这意味着V减小。