使用GD合并两个PNG图像和较小的图像

时间:2013-02-13 17:54:44

标签: php image image-processing imagemagick gd

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

此示例中的“Front”图像为 $ src 示例

中的“返回”图片为 $ dest

Example 1

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

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

然而,我不知道如何使用较小的图像“Behind”更大的图像,以便它完美地适合在洞中。

我是否需要将图像($ dest)重新创建为更大的图像(500 x 500),以便将$ src图像“粘贴”在0偏移的顶部?这个东西很混乱:S

1 个答案:

答案 0 :(得分: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);

希望这有助于某人!