如何使用ImageMagick将2.png的HSL亮度通道替换为2.png的HSL亮度通道?我几乎无法理解convert
语法。
答案 0 :(得分:2)
至少有两种方法可以做到......
首先,最慢的是使用-fx
,命令将如下所示:
convert 1.png 2.png -colorspace HSL -channel L -fx "v" -colorspace RGB result.png
这将加载两个图像,1.png和2.png,并将它们转换为HSL颜色空间。然后,它将使用图像v
中的值生成新的Lighness通道(这是ImageMagick引用序列中第二个图像的方式 - 第一个是u
)。然后它将结果图像转换回RGB色彩空间。
第二种方法看起来像这样,速度会更快,尤其是在较大的图像上:
convert 1.png 2.png \
-colorspace HSL \
-separate \
-delete 2-4 \
-combine \
-set colorspace HSL \
-colorspace rgb \
output.png
基本上,它会加载两个图像,将两个图像转换为HSL,然后分成多个图层。第0层将是1.png的Hue,第2层将是1.png的饱和度,第3层将是1.png的亮度。 3-5层将是2.png的色调,饱和度和亮度。然后我们删除删除1.png的亮度和2.png的Hue&然后饱和度将三个通道合并为一个新图像,将其转换回RGB并将其保存为result.png
为了测试它,我创建了两个虚拟输入图像:
convert -size 256x256 \
xc:red xc:lime +append \
\( xc:blue xc:black +append \) \
-append 1.png
和这个
convert -size 512x512 gradient:black-white 2.png
然后我应用我的第一个技术,即
convert 1.png 2.png -colorspace HSL -channel L -fx "v" -colorspace RGB result.png
我得到了这个
第二种技术给出了相同的结果。