我正在尝试使用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);
我的输出图像看起来就像没有框架的中间图像。任何人都可以发现任何明显我做错的事吗?
答案 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);