PHP GD覆盖JPG上的透明PNG
问题描述:
我想用PHP GD将一帧图像覆盖到图像上。这是我的源图像和我想实现的一个例子...PHP GD覆盖JPG上的透明PNG
帧图像是一个透明的PNG,我的代码看起来像这样...
$dest = imagecreatefromjpeg('image.jpg');
$src = imagecreatefrompng('frame.png');
imagecopymerge($dest, $src, 0, 0, 0, 0, 300, 300, 50);
header('Content-Type: image/jpeg');
imagejpeg($dest, 'output.jpg');
imagedestroy($dest);
imagedestroy($src);
我的输出图像看起来就像没有框架的中间图像。任何人都可以发现任何明显的我做错了吗?
答
你应该仔细看看imagecopymerge()的文档。 imagecopymerge()只需要9个参数,10个在你的脚本中给出。
编辑: imagecopymerge()不能处理alpha通道本身。你必须添加一些额外的代码行。下面是它应该是什么样子:
$src = imagecreatefromjpeg('image.jpg');
$dest = imagecreatefrompng('frame.png');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagealphablending($src, false);
imagesavealpha($src, true);
$insert_x = imagesx($src);
$insert_y = imagesy($src);
$white = imagecolorallocatealpha($dest, 255, 255, 255, 127);
imagecolortransparent($dest, $white);
imagecopymerge($src, $dest, 0, 0, 0, 0, $insert_x, $insert_y, 100);
header('Content-Type: image/jpeg');
imagejpeg($src);
imagedestroy($dest);
imagedestroy($src);
已经修改了原来的职务,但仍然得到同样的输出 – fightstarr20
@ fightstarr20确保删除行头(“内容类型:图像/ JPEG”);如果你想用imagejpeg($ src,'output.jpg')保存文件; –
感谢您的澄清 – fightstarr20