1
如何使用ImageMagick将2.png的HSL亮度通道替换为2.png的HSL亮度通道?我几乎无法理解convert
语法。使用convert将亮度通道替换为另一个亮度通道
如何使用ImageMagick将2.png的HSL亮度通道替换为2.png的HSL亮度通道?我几乎无法理解convert
语法。使用convert将亮度通道替换为另一个亮度通道
至少有两种方法可以做到这一点...
首先和最慢的是使用-fx
和该命令将是这样的:
convert 1.png 2.png -colorspace HSL -channel L -fx "v" -colorspace RGB result.png
将加载两个图像,1 .png和2.png,并将它们都转换为HSL颜色空间。然后,它将通过使用图像v
(这是ImageMagick如何引用序列中的第二个图像 - 第一个是u
)的值生成新的Lighness通道。然后它将结果图像转换回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
为了测试它,我创建了2张虚拟输入相似图片这样的:
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
,我得到这个
第二种方法给出了相同的结果。