Imagemagick 堆栈图像与透明度重叠

Imagemagick stack images overlapping with transparency

我已经和这件事抗争了两天了...没有成功。有些任务我已经用 Gimp 完成了一段时间,但我想现在让它自动化以进行标准处理。

所以结果应该是这样的https://imgur.com/a/jcb3amr 一种在前面的图像和它后面的两个或三个具有一定透明度的图像以淡出图层(可选)。 一组中始终存在相同的图像尺寸。但是尺寸可能与其他组不同。示例:要组合的一组是每张 124x112 像素的图像,另一组是每张 188x80 像素的图像,下一组是 164x160 像素的图像。

我试过

convert image1.png image2.png image3.png -set page '+%[fx:u[t-1]page.x+u[t-1].w-256]+%[fx:u[t-1]page.y+16]' -background none -layers merge +repage output.png

这对某些文件工作正常(除了可选的透明度)。 我真的不需要procentual offset,如果每一层都偏移30x5px就可以了。但是输出图像应该与输入图像相关。

所以,简而言之.. 现在真的很困惑如何实现这一目标。希望有人能帮忙。 我还研究了 PHP Imagick 扩展 https://www.php.net/manual/de/book.imagick.php 在那里我有下面的方法,比上面的更糟糕

  $imagick->newimage(200, 112, '#ffffffff');
  foreach ($uploadfiles as $file) {    
    $im = new Imagick($file);
    $imagick->compositeimage($im, Imagick::COMPOSITE_DEFAULT, 30, 5);
  }
  $imagick->writeImage($output);

好像完全没有抵消。

有人能帮帮我吗?

这适用于 Imagemagick 6。

输入:

convert lena.png \( lena.png -duplicate 2 -alpha set -channel a -evaluate set 75% \) lena.png -set page '+%[fx:u[t-1]page.x+u[t-1].w-128]+%[fx:u[t-1]page.y+16]' -background none -layers merge +repage output.png


第一张和最后一张图片不透明,中间 3 张不透明 75%(25% 透明)

添加:

如果您只想要固定的 X 偏移 30 而没有 Y 偏移,则使用

convert lena.png \( lena.png -duplicate 2 -alpha set -channel a -evaluate set 75% \) lena.png \
-set page '+%[fx:u[t-1]page.x+30]+0' -background none -layers merge +repage output.png