PHP GD覆盖JPG顶部的透明PNG

时间:2017-08-25 08:13:58

标签: php gd

我正在尝试使用PHP GD将帧叠加到图像上。以下是我的源图像示例以及我想要实现的内容......

帧图像是透明的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);

我的输出图像看起来就像没有框架的中间图像。任何人都可以发现任何明显我做错的事吗?

1 个答案:

答案 0 :(得分:1)

您应该仔细查看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);