如何使用 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::compositeImage
和 gravity 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);
概览:
我有两张图片。分辨率为 1920x1080p 的背景图像和分辨率小于 1920x1080p 的叠加图像。
背景图片(1920x1080):
叠加图像:(任何小于 <= 1920x1080 的尺寸)
结果图片(1920x1080):
我正在尝试将叠加图像恰好叠加在背景图像的中心。我知道如何使用 ImageMagick 来完成。
使用ImageMagick的解决方案:
convert -composite -gravity center background.png overlay.png result.png
解释:
我期待在 Imagick::compositeImage
和 gravity 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);