imagecreatefrompng() png透明部分为黑色

imagecreatefrompng() transparent part of png is black

我正在使用 PHP 创建海报,我想在海报上添加数字。

我使用以下代码添加它们:

$src1 = imagecreatefrompng("m2.png");
$widthsrc=0;
$heightsrc=0;
list($widthsrc, $heightsrc, $typesrc, $attrsrc) = getimagesize("m2.png");

$background = imagecolorallocate($src1, 0, 0, 0);
imagecolortransparent($src1, $background);
imagealphablending($src1, false);
imagesavealpha($src1, true);

imagecopyresampled($my_img,$src1,$line2X1+100*$resize,$line2Y1,0,0,1000*$resize,1000*$resize,$widthsrc,$heightsrc);

问题是图形应该透明的地方是黑色的。

我已经看过以下帖子:

  1. imagecreatefrompng-makes-a-black-background-instead-of-transparent
  2. hp-resizing-png-images-generate-black-background
  3. png-has-black-background

但我无法创建适合我的解决方案。

好吧,这很容易 XD 将评论转换为答案:

您的错误在于定义背景颜色。你应该使用这个:

$background = imagecolorallocatealpha($src,0,0,0,127);

但是,为了安全起见,避免使用图片中已经存在的 "transparent" 颜色可能是个好主意。 "traditional" 旧的基于 sprite 的游戏的透明颜色是洋红色,因为您的图像上不太可能有纯洋红色!

$background = imagecolorallocatealpha($src,255,0,255,127);