在 PHP 中,使用 imagecopymerge()
函数可以合并具有透明度的图像。以下是一个示例代码,展示了如何使用此函数将两个透明图像合并为一个:
<?php
// 加载第一个透明图像(PNG 格式)
$srcImage1 = imagecreatefrompng('image1.png');
$transparent1 = imagecolorallocatealpha($srcImage1, 255, 255, 255, 127); // 设置透明度
imagefilledrectangle($srcImage1, 0, 0, imagesx($srcImage1), imagesy($srcImage1), $transparent1);
// 加载第二个透明图像(PNG 格式)
$srcImage2 = imagecreatefrompng('image2.png');
$transparent2 = imagecolorallocatealpha($srcImage2, 255, 255, 255, 127); // 设置透明度
imagefilledrectangle($srcImage2, 0, 0, imagesx($srcImage2), imagesy($srcImage2), $transparent2);
// 创建一个空白图像作为目标图像
$dstImage = imagecreatetruecolor(imagesx($srcImage1), imagesy($srcImage1));
$transparentDst = imagecolorallocatealpha($dstImage, 255, 255, 255, 0); // 设置目标图像的背景色为透明
imagefilledrectangle($dstImage, 0, 0, imagesx($dstImage), imagesy($dstImage), $transparentDst);
// 使用 imagecopymerge() 函数合并两个透明图像
imagecopymerge($dstImage, $srcImage1, 0, 0, 0, 0, imagesx($srcImage1), imagesy($srcImage1), 100);
imagecopymerge($dstImage, $srcImage2, 0, 0, 0, 0, imagesx($srcImage2), imagesy($srcImage2), 100);
// 保存合并后的透明图像(PNG 格式)
imagepng($dstImage, 'merged_image.png', 9); // 9 是 PNG 格式的压缩质量,范围为 0(无压缩)到 9(最大压缩)
// 销毁图像资源
imagedestroy($srcImage1);
imagedestroy($srcImage2);
imagedestroy($dstImage);
?>
在这个示例中,我们首先加载了两个透明的 PNG 图像,并为它们分配了透明度。然后,我们创建了一个空白图像作为目标图像,并设置了其背景色为透明。接下来,我们使用 imagecopymerge()
函数将两个源图像合并到目标图像上。最后,我们将合并后的透明图像保存为 PNG 格式。