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

Kir*_*ash 8 imagemagick imagick

概述:

我得到了两张图片。背景图像具有 1920x1080p 分辨率,叠加图像可以是小于 1920x1080p 的任何分辨率。

背景图片(1920x1080):

在此输入图像描述

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

在此输入图像描述

结果图像(1920x1080):

在此输入图像描述

我试图将覆盖图像精确地覆盖在背景图像的中心。我知道如何使用 ImageMagick 来做到这一点。

使用ImageMagick的解决方案:

convert -composite -gravity center background.png overlay.png result.png
Run Code Online (Sandbox Code Playgroud)

解释:

我希望在Imagick::compositeImage和的帮助下使用 iMagick 做同样的事情gravity center。所以请任何人都可以帮助我。

emc*_*lle 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);
Run Code Online (Sandbox Code Playgroud)

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