颜色修改 指南提供了一些示例
这是一个示例,如果色相接近红色(0°),则将饱和度降低一半
convert rose: \( +clone -modulate 100,50 \) \
-fx '(u.hue < 0.1 || u.hue > 0.9)? v : u' out.png
这是通过复制第一张图片(+clone
),并改变复制图像的饱和度(-modulate
)来实现的。对于-fx
部分,u
是第一张图片,v
是第二张图片。如果第一张图片的hue
与我们的颜色匹配,则返回第二张图片,否则返回第一张图片。
Note: Red is 0°, so we need a logical OR (
||
), but if we're attempting to match another color, not overlapping zero, use the logical AND (&&
).example with blue
-fx '(u.hue < 0.69 && u.hue > 0.63) ? v : u'
可以使用相同的-fx
方法通过计算线性比例尺来实现 -- 就像这个答案或者这里。以下是一个类似的(但并不准确)方程,并展示了如何分离饱和度通道。
convert rose: -colorspace HSL \
\( +clone -colorspace sRGB \
-fx '(hue < 0.1)?saturation+((1-(hue+0.1)*10%1)/10):(hue > 0.9)?saturation+(((hue-0.1) * 10)%1):saturation-(abs(0.5-hue))' \
\) \
-compose CopyGreen -composite \
-colorspace sRGB \
out.png
"-compose CopyGreen -composite
看起来很奇怪,但实际上它所做的是将使用 -fx
生成的图像作为第二个颜色通道(饱和度)应用。
还可以尝试使用 -color-matrix
, -contrast-stretch
, 和 -linear-stretch
进行实验。