如何使用 iMagick 将一个图像叠加在另一个图像之上

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

概览:

我有两张图片。分辨率为 1920x1080p 的背景图像和分辨率小于 1920x1080p 的叠加图像。

背景图片(1920x1080):

叠加图像:(任何小于 <= 1920x1080 的尺寸)

结果图片(1920x1080):

我正在尝试将叠加图像恰好叠加在背景图像的中心。我知道如何使用 ImageMagick 来完成。

使用ImageMagick的解决方案:

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

解释:

我期待在 Imagick::compositeImagegravity center 的帮助下使用 iMagick 做同样的事情。所以请任何人在这里帮助我。

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);