为了避免在使用 PHP 的 imagecopymerge()
函数时发生重叠,您需要确保在合并图像之前正确设置目标图像的尺寸和背景颜色
imagecolorallocate()
函数为目标图像分配背景颜色。imagecopymerge()
函数将源图像复制到目标图像上,确保将源图像的坐标设置为目标图像的尺寸减去源图像的尺寸的一半。以下是一个示例代码:
<?php
// 加载源图像和目标图像
$sourceImage = imagecreatefromjpeg('source.jpg');
$destinationImage = imagecreatefromjpeg('destination.jpg');
// 获取源图像和目标图像的宽度和高度
$sourceWidth = imagesx($sourceImage);
$sourceHeight = imagesy($sourceImage);
$destinationWidth = imagesx($destinationImage);
$destinationHeight = imagesy($destinationImage);
// 创建一个新的空白图像,尺寸等于目标图像的尺寸
$destinationImageCopy = imagecreatetruecolor($destinationWidth, $destinationHeight);
// 为目标图像分配背景颜色
$backgroundColor = imagecolorallocate($destinationImageCopy, 255, 255, 255);
imagefill($destinationImageCopy, 0, 0, $backgroundColor);
// 将源图像复制到目标图像上,避免重叠
imagecopymerge($destinationImageCopy, $sourceImage, 0, 0, 0, 0, $destinationWidth, $destinationHeight, 100);
// 保存合并后的图像
imagejpeg($destinationImageCopy, 'merged_image.jpg');
// 释放内存
imagedestroy($sourceImage);
imagedestroy($destinationImage);
imagedestroy($destinationImageCopy);
?>
在这个示例中,我们首先加载源图像和目标图像,然后获取它们的宽度和高度。接下来,我们创建一个新的空白图像,其尺寸等于目标图像的尺寸,并为其分配背景颜色。最后,我们使用 imagecopymerge()
函数将源图像复制到目标图像上,确保将源图像的坐标设置为目标图像的尺寸减去源图像的尺寸的一半,以避免重叠。