Php 用GD合并两个PNG图像和后面较小的图像

Php 用GD合并两个PNG图像和后面较小的图像,php,image,image-processing,imagemagick,gd,Php,Image,Image Processing,Imagemagick,Gd,我试图合并两个png图像,方法是将一个较小的png放在中间有一个透明“洞”的图像后面 在本例中,“前”图像是$src 示例中的“Back”图像是$dest 到目前为止,我已经使用以下代码使其反向工作(将$dest image/较小的图像放在前面): imagecopymerge($src, $dest, 300, 150, 0, 0, 150, 150, 100); 然而,我不知道如何将较小的图像放在较大图像的“后面”,使其完美地嵌入孔中 我是否需要将图像($dest)重新创建为更大的图像

我试图合并两个png图像,方法是将一个较小的png放在中间有一个透明“洞”的图像后面

在本例中,“前”图像是$src 示例中的“Back”图像是$dest

到目前为止,我已经使用以下代码使其反向工作(将$dest image/较小的图像放在前面):

imagecopymerge($src, $dest,  300, 150, 0, 0, 150, 150, 100);
然而,我不知道如何将较小的图像放在较大图像的“后面”,使其完美地嵌入孔中

我是否需要将图像($dest)重新创建为更大的图像(500 x 500),以将$src图像“粘贴”到偏移量为0的顶部?这东西让人困惑:S

把它弄明白了

首先,我将较小的图像合并到下面与较大图像匹配的空白图像上

然后,我将带有孔的图像合并到上面创建的新图像上。见下文:

// Get size of larger image
$sz = getimagesize("larger.jpg");

// Create resources
$backing = imagecreatetruecolor($sz[0],$sz[1]);
$img1 = imagecreatefrompng("larger.jpg");
$img2 = imagecreatefrompng("smaller.jpg");

// Merge backing
imagecopymerge($backing, $img2,  300, 150, 0, 0, 150, 150, 100);

// Merge main
imagecopymerge($backing,$img1,  0, 0, 0, 0, $sz[0], $sz[1], 100);

// Save new image
imagepng($backing,$save);

// Destroy resources
imagedestroy($backing);
imagedestroy($img1);
imagedestroy($img2);

希望这对别人有帮助

我认为你不能把一个较大的源合并到一个较小的目的地。您应该将dest裁剪为150x150或任何大小的窗口,并将其复制到较大图像的顶部。或者你可以按照你的建议去做。@mkaatman你是对的,我解决了。只要把上面的问题打出来就帮我解决了:)把答案放在下面