Imagemagick堆叠的图像与透明度重叠

问题描述 投票:0回答:1

我现在为此战斗了两天……没有成功。我已经用Gimp完成了一些任务,但是现在我想使其自动化以进行标准处理。

因此结果应如下图所示https://imgur.com/a/jcb3amr前面一种图像,后面两种或三种图像,具有一定的透明度,可以淡化图层(可选)。一组中始终存在相同的图像尺寸。但是尺寸可能与其他组不同。例如:要组合的一组是每个图像124x112px,另一组是188x80px,下一组是164x160px。

我尝试过类似的东西

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

对于某些文件,它工作正常(可选的透明度除外)。我真的不需要分叉的偏移量,如果每层都偏移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);

似乎完全没有抵消它。

有人帮助我吗?

transparency layer imagemagick-convert
1个回答
0
投票

这在Imagemagick 6中对我有用。

输入:

enter image description here

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

enter image description here

第一个和最后一个图像是不透明的,中间的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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.