在 PHP 中,使用 imagecopymerge()
函数时,如果源图像具有透明度,您需要确保目标图像也启用了透明度,并将其背景设置为透明
首先,创建一个带有透明背景的图像:
// 创建一个 200x200 大小的透明背景图像 $background = imagecreatetruecolor(200, 200); imagealphablending($background, false); // 禁用透明度混合 imagesavealpha($background, true); // 保存 alpha 通道 $transparent = imagecolorallocatealpha($background, 255, 255, 255, 127); // 白色,半透明 imagefilledrectangle($background, 0, 0, 200, 200, $transparent);
接下来,创建一个带有透明度的源图像:
// 创建一个 100x100 大小的源图像(带透明度) $source = imagecreatetruecolor(100, 100); imagealphablending($source, false); // 禁用透明度混合 imagesavealpha($source, true); // 保存 alpha 通道 $red = imagecolorallocatealpha($source, 255, 0, 0, 127); // 红色,半透明 imagefilledrectangle($source, 0, 0, 100, 100, $red);
现在,使用 imagecopymerge()
将源图像复制到目标图像上:
// 将源图像复制到目标图像上,合并源图像和目标图像的透明度 imagecopymerge($background, $source, 50, 50, 0, 0, 100, 100, true);
最后,输出带有透明度的合并图像:
// 输出合并后的图像 header('Content-type: image/png'); imagepng($background);
这段代码将创建一个带有透明背景的图像,并在其中复制一个带有透明度的源图像。imagecopymerge()
函数的最后一个参数设置为 true
以处理源图像的透明度。