掩蔽图像';Imagemagick中的sα

掩蔽图像';Imagemagick中的sα,imagemagick,imagemagick-convert,Imagemagick,Imagemagick Convert,我需要创建一个图像作为滚动背景图像使用。这是一个分为8块的圆形图案。以下是主图像的截图(带透明度的png): 这是一张面具图片的截图。它与主图像的大小相同,并且具有“饼”形块,以便遮罩除悬停在上面的扇区之外的所有部分 我包括截图,因为我相信答案应该很简单(当你知道答案时,不是所有答案都很简单吗?!),所以我会节省带宽,但如果有帮助的话,我可以上传原始文件 下面是我用来创建新蒙版图像的命令: convert main.png \( mask.png -colorspace gray -alph

我需要创建一个图像作为滚动背景图像使用。这是一个分为8块的圆形图案。以下是主图像的截图(带透明度的png):

这是一张面具图片的截图。它与主图像的大小相同,并且具有“饼”形块,以便遮罩除悬停在上面的扇区之外的所有部分

我包括截图,因为我相信答案应该很简单(当你知道答案时,不是所有答案都很简单吗?!),所以我会节省带宽,但如果有帮助的话,我可以上传原始文件

下面是我用来创建新蒙版图像的命令:

convert main.png \( mask.png -colorspace gray -alpha off \) \
-compose copy-opacity -composite new.png
问题在于创建的新图像将原始图像的alpha展平为黑色背景:


如何让Imagemagick保持原始png的透明度?

您希望蒙版合成可以做到这一点

该技术是将原始图像(src)合成到相同大小的完全透明图像(dst)上,使用遮罩限制合成区域(遮罩)。这是
-composite
操作符的一个特例,它涉及3个图像,而不像其他合成方法那样涉及2个图像。您没有为此指定任何
-compose
模式

获取此技术所需的完全透明dst的一种快速方法是克隆src图像并将其alpha通道调零,然后交换src和dst的顺序,使它们处于正确的顺序,以便执行
-composite
操作:

convert main.png -alpha on \( +clone -channel a -fx 0 \) +swap mask.png -composite out.png
我对它不满意,因为它似乎忽略了面具的灰度

这一个对我有用:

composite -compose Dst_In \( mask.png -alpha copy \) main.png -alpha Set PNG32:result.png


方法将两个图像的alpha通道相乘。这里的诀窍是将灰度蒙版转换为alpha通道,这是用完成的。

Brilliant!测试和工作完美。很好的解释。谢谢有人知道如何处理RMagick吗?我想不出来。
convert -compose Dst_In \( mask.png -alpha copy \) main.png -alpha Set -composite PNG32:result.png