5

我有一个 PNG,我正在尝试将它合并到 JPG 之上。使用以下代码

$dest = imagecreatefromjpeg("example.jpg");
$src = imagecreatefrompng("example.png");

imagealphablending($dest, false);
imagesavealpha($dest, true);

imagealphablending($src, true);

imagecopymerge($dest, $src, $src2x, $src2y, 0, 0, $src2w, $src2h, 100);

header('Content-Type: image/png');
imagepng($dest, "user/".$imei."/".$picCount."_m");

imagedestroy($dest);
imagedestroy($src);

结果如下

在此处输入图像描述

我还尝试了一个类似问题的建议,该问题说使用“imagecopyresampled”而不是“imagecopymerge”,但是当我这样做时,圣诞老人的帽子根本没有出现。

我需要更改什么以使圣诞帽在合并时保持透明?

4

1 回答 1

11

解决方案都需要使用“imagecopyresampled”。以及从发布的源代码中删除第 4 行和第 5 行。

imagealphablending($dest, false);
imagesavealpha($dest, true);

这是完整的工作版本

$dest = imagecreatefromjpeg("example.jpg");
$src = imagecreatefrompng("example.png");

imagecopyresampled($dest, $src, $src2x, $src2y, 0, 0, $src2w, $src2h, $src2w, $src2h); 

header('Content-Type: image/png');
imagejpeg($dest, "user/".$imei."/".$picCount."_m.jpeg");

imagedestroy($dest);
imagedestroy($src);

在此处输入图像描述

于 2013-02-23T21:19:29.450 回答