【问题标题】:overlay images as transparent layers with imagemagick使用 imagemagick 将图像叠加为透明图层
【发布时间】:2015-03-18 01:12:18
【问题描述】:

我想使用 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

编辑: 在 Mark Setchells 最新的 cmets 之后,我得到了

我想要的是出现在所有图像中的那些区域(示例中的中心)加起来就是不透明区域,而那些只出现在较少图像上的区域变得越来越透明。标记示例似乎适用于 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

【问题讨论】:

    标签: imagemagick


    【解决方案1】:

    您需要的是一种不同的合成模式。您使用的是-compose overlay,它将在每个连续层中减轻结果。您可能想要的是 -compose blend 只保留最饱和的值,或者只是 -compose over 将它们分层而不进行修改。

    【讨论】:

      【解决方案2】:
      #!/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
      

      【讨论】:

      • 不是我想要的 - 请参阅上面的编辑。由于某种原因,背景仍然很暗。
      • 好的,我会尝试不同的透明度设置,但是,您发送的代码仍然会使背景变黑 - 请比较我想要的输出的角(由于透明度它们是白色的)命令的输出(半透明黑色)。你知道如何摆脱它吗?
      • 我想我明白了...请在我的回答中尝试第一个命令。
      • 以上只是一个包含 3 张图像的示例,我确实使用了更多图像,结果看起来并不像我想要的那样。你知道如何像上面解释的那样简单地添加透明层吗?
      • 请再看看。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 2022-10-23
      相关资源
      最近更新 更多