0

我这样做正确吗?例如,我有一个RGB(165,165,165)并将其转换为 HSL(Get (0, 0, 64.7))。实际上我解析 xml,我有两个参数 lumMod = '60 000' 和 lumOff = '40 000' (据我所知,这意味着我必须将 L 分量乘以 0.6,然后将 0.4 添加到 L 分量)

奥基new_l = 0.647*0.6 + 0.4 = 0.7882

现在我从 HSL(0, 0, 78.8) 转换回RGB(198, 198, 198)

实际上我需要得到 RGB(183,183,183)。因为这是正确的答案。我哪里错了?

4

1 回答 1

0

经过一整夜的调试,我已经找到了我问题的答案。

感谢主题的萨勒姆诺国王

图表正在执行的算法,执行以下步骤:

  1. 获取他们感兴趣的基色的 RGB(例如 Accent 3)

  2. 转换为 HSL

  3. 将 L 分量乘以 lumMod

  4. 将 lumOff 添加到 L 分量

  5. 转换回 RGB

同样的逻辑也适用于 satMod、satOff、hueMod 和 hueOff。

但是对于所有级别只有一个值的 rgb-color(例如 (255, 255, 255) 或 (123, 123, 123)),我将 lumMod 更改lumMod = lumMod - 0.04(+-0.005)为并对 lumoff 参数执行相同的操作。

因此,如果我有 RGB(165,165,165) 并将其转换为 HSL(0, 0, 0.647)。在我改变之后HSL.L = HSL.L*(lumMod - 0.04) + (lumOff - 0.04) = 0.718 现在我从 HSL(0, 0, 0.718) 转换回 RGB(183,183,183)

我不知道为什么它会这样工作,但它确实有效。我试图找出它。

于 2014-02-22T13:02:40.240 回答