在ImageMagick转换中,我可以选择特定的颜色,例如-opaque blue
。如何选择所有灰度颜色(例如#000000,#707070,#fffffff)?
答案 0 :(得分:1)
不确定您要做什么,但这可能会有所帮助。灰度像素的饱和度为零,因此这可能是识别它们的最简单方法。
首先,制作一个时髦的样本图像:
convert -size 400x100 gradient:black-white -bordercolor red -border 80 image.png
现在使所有灰色区域(饱和度非常低的区域)透明:
convert image.png -alpha on -channel A -fx "saturation<0.01?0:1" result.png
注意强>
请注意,-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