我在谷歌上查找,但找不到任何解决方案。
我需要通过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);
直接使用命令将图像输出到浏览器,第二个参数将图像保存到文件中。