【发布时间】:2011-09-26 20:49:03
【问题描述】:
我正在使用jquery colors 将颜色从十六进制转换为 hsl,通过添加一个从 0 到 360 的数字来修改它的色调,然后执行 mod 360 以获得我真正感兴趣的新色调值在获得
问题是我不知道如何正确地将其转换回 RGB
鉴于以下示例(您可以在jsfiddle here 上测试它),为什么hslAfter 的值与hsl 不同?
据我所知,我只是将 HEX 格式的 originalColor 转换为 HSL 值数组,然后尝试在 hslAfter 中创建一个字符串。
function testHue() {
var originalColor = $.colors($("#originalColor").val());
var hsl = $.colors(originalColor).model('HSL').get();
var hslAfter = $.colors(hsl).toString('hsl');
var hex = $.colors(hsl).toString('hex');
}
hslAfter 不应该与hsl 具有相同的值吗? (这里我什至没有提到新的十六进制值,这当然应该与原来的十六进制颜色相同)
我在这里遗漏了什么(无论如何要解决这个问题)?
【问题讨论】:
-
我被你的小提琴弄糊涂了...如果我输入
#ffffff,我们是否期望最后一项是#ffffff? -
我也是。但你的问题首先是谈论改变色调。
-
我正在解释我想到使用的算法(转换为 hsl,修改色调,返回 rgb)并给出一个明显的例子来说明我的问题是什么(如果我要实际改变颜色在小提琴中,我不会看到它那么明显)。也许我的做法有问题,也许还有另一种(更好的)方法(只是把所有的事实都放进去)