-webkit-filter's hue-rotate does not seem to produce correct results in chrome
如果使用以下方法将色相旋转90度:
1 2 3 4 | .foo { -webkit-filter: hue-rotate(90deg); } |
它会旋转色相,但看起来不正确。 例如,如果我在photoshop中执行相同的转换,则会得到不同的结果。 我还注意到,Chrome和Safari的结果有所不同。
如果我截取屏幕截图并在photoshop中打开经过修改的图像(通过-webkit-filter),则可以看到色相仅旋转了60度,并且饱和度也降低了。
有没有办法让Webkit浏览器更可靠地旋转色调,或者我是否缺少有关此过滤器方法的基本知识。
这是一个说明问题的小提琴:
http://jsfiddle.net/xv5Ah/1/
我认为您在Chrome中遇到了一个错误,如果我在hsl中声明颜色并添加90deg,结果将是不同的:http://jsfiddle.net/HrHpA/。
1 2 3 4 5 6 7 8 9 10 11 12 | div { width: 50px; height: 50px; margin-bottom: 10px; /* hsl(131+90,100%,50%) */ background: hsl(221,100%,50%); } .hue { background: hsl(131,100%,50%); -webkit-filter: hue-rotate(90deg); } |
可能有不同的颜色模型可以解释这个问题,但是在我看来,结果相差甚远。
我会在https://code.google.com/p/chromium/issues/entry提交错误报告
这不是错误。色相旋转近似于RGB空间中的色相旋转-对于某些颜色(例如高度饱和),结果非常不准确。请查看此问题的答案,以查看此裁剪严重扭曲了结果:
为什么色相旋转+ 180deg和-180deg不能产生原始颜色?
他们实际上都是正确的。我认为您可能会搞砸的地方是Photoshop使用HSB颜色模型,而CSS使用HSL。
仅供参考:
在HSB中,(B)正确性从0%的黑色变为100%的全彩色。
在HSL中,(L)色度从0%的黑色变为50%的全彩色,再到100%的白色。