PHP imagick或GD从数组中合并图像


PHP imagick or GD merge image from an array

我在谷歌上查找,但找不到任何解决方案。

我需要通过php合并多个png文件。当我这样声明图像路径时,一切都正常:

    <?php
    $img1 = new Imagick('face.png');
    $img2 = new Imagick('glasses-1.png');
    $img1->compositeImage( $img2, imagick::COMPOSITE_DEFAULT, 0, 0 );
    $img1->setImageBackgroundColor('transparent');
    $img_wynik = $img1->flattenImages();
    $img_wynik->setImageFormat('png');
    $img_wynik->writeImage( 'avatar.png' );
    header('Content-type: image/png');
    echo $img_wynik;
    ?>

但我确实需要使用图像数组,所以我制作了测试文件,但它不起作用。

我想我可以使用像这样的简单阵列

$srcImagesPath = array('glasses-1.png', 'mouth-1.png') //for example

然后把我的测试代码改成这个

$img2 = new Imagick ($srcImagesPath)

但它总是给我合并的face.png和数组中的最后一个图像。

知道如何建造它吗?

$srcImagesPath是一个数组,因此您需要指定它的一个元素,而不是传递数组本身。我想你想要:

$img2 = new Imagick ($srcImagesPath[0])

$img2 = new Imagick ($srcImagesPath[1])

如果您安装了GD库(假设您安装了):

$image1 = imagefrompng('glasses-1.png');
$image2 = imagefrompng('mouth-1.png');

完成后,您可以使用在新图像中创建一个帧

imagecopymerge()

我会让你对目的地、来源和坐标进行排序。。。称之为挑战;)

从那里,你所要做的就是使用imagepng:将合成图像输出到一个文件中

imagepng($compositedImage, $path_to_filesystem_destination);

直接使用命令将图像输出到浏览器,第二个参数将图像保存到文件中。