PHP ImageMagick - 合成图像



将两个或更多图像组合成一个新图像时称为合成摄影。而组合后的照片称为合成图像。 将视觉元素从单独的来源组合成一个图像通常是想要创造出所有这些元素都是同一图像的一部分的错觉。

手动完成此操作会变得非常复杂,需要花费数小时。为了使此流程轻松快捷,Imagemagick 提供了一种名为“compositeImage()”的方法,该方法将两张图像作为输入,并提供合并的图像作为输出。

语法

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

此方法的参数是复合对象、x、y 和通道。“复合对象”是保存复合图像的 Imagick 对象。

“x”是合成图像的列偏移,“y”是合成图像的行偏移。“通道”提供对通道模式有效的任何通道常量。

示例

此示例是一个 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) −

Composite Images

假设在程序中,以下为输入图像 (image2.jpg) −

Composite Images

输出

Composite Images
广告