0

我试图通过在图像后面放置一个较小的 png 图像来合并两个 png 图像,该图像的中心有一个透明的“洞”。

在这个例子中“前”图像是$src在这个例子中“后”图像是$dest

示例 1

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

imagecopymerge($src, $dest,  300, 150, 0, 0, 150, 150, 100);

但是,我不确定如何使用较小的图像“在”较大的图像“后面”,以便它完全适合孔。

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

4

1 回答 1

1

弄清楚了。

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

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

// 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);

希望这对某人有帮助!

于 2013-02-13T18:32:47.533 回答