ImageMagick在HSL上的综合(不是HSB,也不是HSV)

时间:2012-08-11 06:51:39

标签: imagemagick photoshop color-space hsl hsb

我想做的就是通过编写CUI工具来替换Photoshop的基于HSL的混合模式(颜色/色调/饱和度/亮度)。 如果我能通过RMagick做到这一点会更好。

ImageMagick可以管理HSL色彩空间,但ImageMagick的复合运算符Colorize / Hue / Saturation / Luminize是硬编码的,基于HSB色彩空间。

如果没有编写逐像素处理代码,是否有任何解决方法? 感谢。

1 个答案:

答案 0 :(得分:0)

我尝试了单独和组合的方法。 然后一个故事开始了。

ImageMagick-6.6.9-7有rgb< - > hsl计算的精确定位错误。 Ubuntu 12.04 LTS的软件包存储库提供了它... grrrr (ImageMagick本身,固定在r4431,良好的> = 6.6.9-9)

然后我坐下来做数学运算,得到一个简单的-fx表达式。

colorize_hsl.fx:

ul = u.lightness; vl = v.lightness;
bias = (ul < .5 ? ul : 1 - ul)/(vl < .5 ? vl : 1 - vl);
(v - vl)*bias + ul

这是一个基于rgb的公式,用于设置新的亮度并保持其色调和饱和度。 要获得luminize_hsl,请交换u和v。

临时变量(ul,vl和bias)在所有通道中都很常见, 但-fx引擎可能会尝试3次。 这还不够......