我正在制作一个从外部 URL 提取图像的脚本。然后我使用 imagecopy() 来合并图像,因为它是透明图像。但是,当我将 X 坐标指定为不为 0 时,它会在图像的一侧创建一个黑色区域。这是我的代码的一部分。
$src = imagecreatefrompng("URL...");
imagecopy($im, $src, 0, 0, 50, 18, 300, 300);
有没有什么办法解决这一问题?
我正在制作一个从外部 URL 提取图像的脚本。然后我使用 imagecopy() 来合并图像,因为它是透明图像。但是,当我将 X 坐标指定为不为 0 时,它会在图像的一侧创建一个黑色区域。这是我的代码的一部分。
$src = imagecreatefrompng("URL...");
imagecopy($im, $src, 0, 0, 50, 18, 300, 300);
有没有什么办法解决这一问题?
您好,欢迎来到论坛!
您需要在这些行中间添加这些行,因此您的最终代码应该是:
$src = imagecreatefrompng("URL...");
imagealphablending($im, false);
imagesavealpha($im, true);
imagecopy($im, $src, 0, 0, 50, 18, 300, 300);
现在应该可以了!
我花了很长时间让透明度为我工作,针对您的情况进行了修改但未经测试:
$newImg=imagecreatetruecolor($im_width,$im_height);
imagealphablending($newImg,false);
imagesavealpha($newImg,true);
$transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
imagefilledrectangle($newImg, 0, 0, $im_width, $im_height, $transparent);
imagecopyresampled($newImg, $im, 0, 0, 0, 0, $im_width, $im_height, $im_width, $im_height);
imagecopy($newImg, $src, 0, 0, 50, 18, 300, 300);