使用PHP在JPG图像上合并PNG图像并保留透明度

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',但是当我这样做时,圣诞帽根本没有显示。

我需要改变什么才能使合并后的圣诞帽保持透明度?

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

enter image description here


1
感谢您发布您的解决方案,帮助我省去了很多麻烦。 :) - Relaxing In Cyprus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接