使用imagemagick将图像覆盖为透明层

使用imagemagick将图像覆盖为透明层,imagemagick,Imagemagick,我想使用imagemagick堆叠几个图像。我想要的结果与我将所有图像作为层导入Gimp并将层透明度设置为某个值时得到的结果相同 每个图像都是透明的,中心有一个大小不同的圆圈。用100/N%的不透明度覆盖所有N幅图像,会让我感觉像是一个模糊的斑点,透明度呈放射状增加。下面是三个示例图像 但是,如果我尝试使用imagemagick执行此操作,我会得到一个黑色背景: convert image50.png -background transparent -alpha set -channel

我想使用imagemagick堆叠几个图像。我想要的结果与我将所有图像作为层导入Gimp并将层透明度设置为某个值时得到的结果相同

每个图像都是透明的,中心有一个大小不同的圆圈。用100/N%的不透明度覆盖所有N幅图像,会让我感觉像是一个模糊的斑点,透明度呈放射状增加。下面是三个示例图像

但是,如果我尝试使用imagemagick执行此操作,我会得到一个黑色背景:

convert image50.png -background transparent -alpha set -channel A -fx "0.2" \( image60.png -background transparent -alpha set -channel A -fx "0.2" \) -compose overlay -composite -flatten result.png
编辑: 在马克·塞切尔的最新评论之后,我得到了

我想要的是,所有图像中出现的区域(示例中的中心)加起来就是非透明区域,而那些仅出现在较少图像上的区域变得越来越透明。Marks示例似乎适用于3个图像,但不适用于更大的堆栈。我希望得到的结果是这个(这里我通过添加非白色背景来强调透明区域):

示例图像就是由这张照片制作的

使用此bash命令:

for i in $(seq 10 10 90); do
    f="image$i.png"
    convert http://i.stack.imgur.com/hjWgF.png -quality 100 -fuzz $i% -fill white -transparent black $f
done

这里需要的是不同的合成模式。您使用的是
-compose overlay
,它将使每个连续层的结果变亮。您可能希望这里的
-compose blend
只保留最饱和的值,或者只
-compose over
不做任何修改地对其进行分层。

不完全是我想要的-请参见上面的编辑。由于某些原因,背景仍然是黑色的。好的,我将尝试不同的透明度设置,但是,您发送的代码仍然会使背景变为黑色-请将我所需输出的角点(由于透明度,它们是白色的)与您的命令输出的角点(半透明黑色)进行比较。你知道怎么摆脱它吗?我想我已经得到它了。。。请尝试我答案中的第一个命令。上面只是一个有3张图片的例子,我真的使用了更多的图片,结果并不像我想要的那样。你知道如何像上面解释的那样简单地添加透明层吗?请再看一看。
#!/bin/bash

# Calculate how many images we have
N=$(ls image*.png|wc -l)
echo N:$N

# Generate mask, start with black and add in components from each subsequent image
i=0
convert image10.png -evaluate set 0 mask.png
for f in image*png;do
   convert mask.png \( "$f" -alpha extract -evaluate divide $N \) -compose plus -composite mask.png 
done

# Generate output image
convert image*.png      \
   -compose overlay -composite \
   mask.png -compose copy-opacity -composite out.png