如何选择所有灰度颜色?

时间:2016-02-09 12:22:20

标签: imagemagick imagemagick-convert

在ImageMagick转换中,我可以选择特定的颜色,例如-opaque blue。如何选择所有灰度颜色(例如#000000,#707070,#fffffff)?

1 个答案:

答案 0 :(得分:1)

不确定您要做什么,但这可能会有所帮助。灰度像素的饱和度为零,因此这可能是识别它们的最简单方法。

首先,制作一个时髦的样本图像:

 convert -size 400x100 gradient:black-white -bordercolor red -border 80 image.png

enter image description here

现在使所有灰色区域(饱和度非常低的区域)透明:

convert image.png -alpha on -channel A -fx "saturation<0.01?0:1" result.png

enter image description here

注意

请注意,-fx运算符功能非常强大,但速度非常慢,因为它实际上是针对每个像素进行插值的。如果您的图像很大,以下技术可能更合适。

基本上,我克隆图像并将整个事物转换为HSL颜色空间并分离通道。然后我丢弃了Hue和Lightness通道,所以我只剩下Saturation。然后我将其阈值并将其复制回原始图像作为alpha通道。在2000x2000像素图像上,此方法将在一秒钟内运行,而-fx方法将需要5-6秒。

convert image.png \( +clone -colorspace hsl -separate -delete 0,2 -threshold 1% \) -compose copy-opacity -composite result.png