PHP ImageMagick - 合成图像

将两个或多个图像组合起来创建一个新图像称为合成摄影。 组合后的照片称为合成图像。将不同来源的视觉元素组合成单个图像通常会产生所有这些元素都是同一图像的一部分的错觉。

手动执行此操作会成为一项非常复杂的任务,并且需要几个小时。 为了使这个过程变得简单快速,Imagemagick 提供了一个名为"compositeImage()"的方法,该方法将两个图像作为输入并提供组合图像作为输出。

语法

public Imagick::compositeImage(Imagick $composite_object, int $composite, int $x, int $y, int $channel = Imagick::CHANNEL_DEFAULT): bool

该方法的参数为composite_object、x、y、channel。 'Composite_object'是一个保存合成图像的 Imagick 对象。

'x'是合成图像的列偏移,'y'是合成图像的行偏移。 "Channel"提供对您的通道模式有效的任何通道常数。

示例

这个例子是一个 PHP 代码片段,它实现了'compositeImage()'函数。 首先,创建两个 imagick 对象,并将两张图像作为输入。 两个图像都是通过'compositeImage()'函数合成的,输出图像的格式为'compositeImage.png'。

<?php
   $image1=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image1.jpg");
   $image2=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image2.jpg");
   $image1->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
   $image1->setImageArtifact('compose:args', "1,0,-0.5,0.5");
   $image1->compositeImage($image2, Imagick::COMPOSITE_MATHEMATICS, 0, 0);
   $image1->writeImage($_SERVER['DOCUMENT_ROOT']."/test/compositeImage.png");
?>

假设以下是程序中的输入图像(image1.jpg)−

合成图像

假设以下是程序中的输入图像(image2.jpg)−

合成图像

输出

合成图像