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”是合成图像的行偏移。“通道”提供对您的通道模式有效的任何通道常量。

例子

此示例是一个实现“compositeImage()”函数的 PHP 代码片段。首先,创建两个 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) -

合成图像

输出

合成图像