这让我大吃一惊。我想合并 2 个透明的 PNG。
一个是从方形图像动态生成的圆形($source)。第二个是带有透明圆圈的地图标记($marker),以适合第一个后面。
imagepng($source); 和 imagepng($marker); 正如人们所期望的那样输出。具有透明背景。
然后,我创建一个与标记大小相同的空透明图像,将它们放在一起:
//NEW BLANK TRANSPARENT IMAGE
$dest = imagecreatetruecolor(50, 61);
$transparent = imagecolorallocatealpha($dest, 0, 0, 0, 127);
imagefill($dest, 0, 0, $transparent);
imagealphablending($dest, true);
imagesavealpha($dest,true);
//COPY THE CIRCLE
imagecopy($dest, $source, 5, 5, 0, 0, 41, 41);
//AND THE MARKER ON TOP
imagecopy($dest, $marker, 0, 0, 0, 0, 50, 61);
结果,圆圈显示为一个黑色正方形,圆圈在里面。我在 $source 和 $dest 上尝试了很多 imagealphablending 和 imagesavealpha 的组合,但似乎没有任何效果。
如何删除黑色方块并使结果中的 $source 在合并之前保持透明?