如何使用iMagick将一张图片叠加在另一张图片上

7

概述:

我有两张图片。背景图片分辨率为1920x1080p,叠加图片的分辨率可以小于等于1920x1080p。

背景图片(1920x1080):

enter image description here

叠加图片(任何小于等于1920x1080大小的图片)

enter image description here

结果图片(1920x1080):

enter image description here

我想把叠加图片精确地放在背景图片中心。我知道如何使用ImageMagick完成它。

使用ImageMagick的解决方案:

convert -composite -gravity center background.png overlay.png result.png

期望:

我希望能够使用 iMagick,通过 Imagick::compositeImagegravity center 的帮助来做同样的事情。所以请问有人可以在这里帮助我吗?


1
我认为这可能是ImageMagick中的一个错误。我已经在上游打开了一个错误报告 https://github.com/ImageMagick/ImageMagick/issues/13 - Danack
1个回答

6

Imagick使用C-API MagickWand,但它不会自动继承-composite -gravity的行为。您需要自己计算。

$background = new Imagick( __DIR__ . DIRECTORY_SEPARATOR . '6pEEG.png');
$window = new Imagick(__DIR__ . DIRECTORY_SEPARATOR . 'mpyY3.png');

$deltaX = $background->getImageWidth()  - $window->getImageWidth();
$deltaY = $background->getImageHeight() - $window->getImageHeight();

$background->compositeImage($window,
                            Imagick::COMPOSITE_ATOP,
                            $deltaX / 2,
                            $deltaY / 2);

How to overlay an image on top of another image using iMagick


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接