ImageMagick - 如何改变目标颜色的饱和度?
ImageMagick - How to change saturation of a targeted color?
使用ImageMagick转换,如何调整特定色相的饱和度? (以度为单位)
例如我增加了红色的饱和度(0 度色调)。偏蓝的颜色不会受到影响,但橙色也会有点饱和,因为它紧挨着红色。
当然,我希望能够配置受影响颜色的宽度。
注意:请使用转换命令,而不是重定向到脚本。
PS:在 emcconville 的回答后澄清:
饱和度是渐进的:我们越接近匹配的颜色,应用的滤镜就越多。基本上是在 Photoshop 中完成的方式。请参阅屏幕截图 - 抱歉,它是法语,Teinte 的意思是 Hue。您可以在底栏中以度数为单位查看和调整匹配颜色的范围,在 8 到 90(以及 318 到 255)之间,滤镜是渐进的。
Color Modification 指南提供了一些示例
这是一个例子,如果色调接近红色 (0°),饱和度将降低一半
convert rose: \( +clone -modulate 100,50 \) \
-fx '(u.hue < 0.1 || u.hue > 0.9)? v : u' out.png
这是通过复制第一张图片(+clone
), and alter the saturation (-modulate
) of the copied image. For the -fx
部分,u
是第一张图片,v
是第二张图片。如果第一张的hue
图片匹配我们的颜色,return 第二张图片,否则 return 第一张。
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
方法——如 this answer, or here。下面是一个类似(但不准确)的方程式,展示了如何隔离 饱和度 通道。
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
生成的图像,并将其应用为第二个颜色通道(饱和度)。
使用ImageMagick转换,如何调整特定色相的饱和度? (以度为单位)
例如我增加了红色的饱和度(0 度色调)。偏蓝的颜色不会受到影响,但橙色也会有点饱和,因为它紧挨着红色。
当然,我希望能够配置受影响颜色的宽度。
注意:请使用转换命令,而不是重定向到脚本。
PS:在 emcconville 的回答后澄清:
饱和度是渐进的:我们越接近匹配的颜色,应用的滤镜就越多。基本上是在 Photoshop 中完成的方式。请参阅屏幕截图 - 抱歉,它是法语,Teinte 的意思是 Hue。您可以在底栏中以度数为单位查看和调整匹配颜色的范围,在 8 到 90(以及 318 到 255)之间,滤镜是渐进的。
Color Modification 指南提供了一些示例
这是一个例子,如果色调接近红色 (0°),饱和度将降低一半
convert rose: \( +clone -modulate 100,50 \) \
-fx '(u.hue < 0.1 || u.hue > 0.9)? v : u' out.png
这是通过复制第一张图片(+clone
), and alter the saturation (-modulate
) of the copied image. For the -fx
部分,u
是第一张图片,v
是第二张图片。如果第一张的hue
图片匹配我们的颜色,return 第二张图片,否则 return 第一张。
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
方法——如 this answer, or here。下面是一个类似(但不准确)的方程式,展示了如何隔离 饱和度 通道。
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
生成的图像,并将其应用为第二个颜色通道(饱和度)。