Imagemagick 使用“转换”将亮度通道替换为其他亮度通道
如何使用ImageMagick将1.png的HSL亮度频道替换为2.png的HSL亮度频道?我几乎无法理解转换语法。至少有两种方法可以做到这一点 首先,最慢的是使用Imagemagick 使用“转换”将亮度通道替换为其他亮度通道,imagemagick,hsl,Imagemagick,Hsl,如何使用ImageMagick将1.png的HSL亮度频道替换为2.png的HSL亮度频道?我几乎无法理解转换语法。至少有两种方法可以做到这一点 首先,最慢的是使用-fx,命令如下所示: convert 1.png 2.png -colorspace HSL -channel L -fx "v" -colorspace RGB result.png convert -size 256x256 \ xc:red xc:lime +append \
-fx
,命令如下所示:
convert 1.png 2.png -colorspace HSL -channel L -fx "v" -colorspace RGB result.png
convert -size 256x256 \
xc:red xc:lime +append \
\( xc:blue xc:black +append \) \
-append 1.png
这将加载两个图像,1.png和2.png,并将它们转换为HSL颜色空间。然后,它将使用imagev
中的值生成一个新的亮度通道(这就是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的色调,第2层为1。png的饱和度,第3层为1。png的亮度。第3-5层为2层。png的色调、饱和度和亮度。然后我们删除1.png的亮度和2.png的色调和饱和度,然后将三个通道合并成一个新图像,将其转换回RGB并保存为result.png
为了测试它,我创建了两个虚拟输入图像,如下所示:
convert 1.png 2.png -colorspace HSL -channel L -fx "v" -colorspace 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
我明白了
第二种技术给出了相同的结果