0

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

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

有没有不编写逐像素处理代码的解决方法?谢谢。

4

1 回答 1

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 次。这不够...

于 2012-08-13T03:01:51.433 回答