2015-05-25 49 views

回答

2

至少有两种方法可以做到这一点...

首先和最慢的是使用-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 

enter image description here

convert -size 512x512 gradient:black-white 2.png 

enter image description here

然后我申请我的第一个技术,即

convert 1.png 2.png -colorspace HSL -channel L -fx "v" -colorspace RGB result.png 

,我得到这个

enter image description here

第二种方法给出了相同的结果。

相关问题