如何使用iMagick将图像叠加在另一个图像的顶部

时间:2015-06-24 06:33:27

标签: imagemagick imagick

概述:

我有两张照片。具有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

Expextation:

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

1 个答案:

答案 0 :(得分:4)

Imagick包装了不会自动继承-composite -gravity行为的C-API MagickWand。你需要自己做数学。

$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