📅  最后修改于: 2023-12-03 15:03:40.644000             🧑  作者: Mango
spliceImage()
是一个用于合并多个图片的 PHP 函数,它可以将多张图片按指定的方式拼接成一张大图,非常适合用于生成海报、拼图等应用场景。
/**
* spliceImage - 将多张图片拼接成一个大图
*
* @param array $images 待拼接的图片路径,数组长度应为 2 或 3
* @param int $width 拼接后的图片宽度
* @param int $height 拼接后的图片高度
* @param string $mode 拼接模式,可选值为 'vertical' 或 'horizontal'
*
* @return string 拼接后的图片保存路径
*/
function spliceImage($images, $width, $height, $mode='vertical') {
// TODO: 实现函数逻辑
}
images
:待拼接的图片路径,传入一个数组,数组长度应为 2 或 3,其中元素为字符串类型的图片路径。width
:拼接后的图片宽度,整数类型。height
:拼接后的图片高度,整数类型。mode
:拼接模式,可选值为 'vertical'
或 'horizontal'
,默认为 'vertical'
,表示垂直拼接,如果设置为 'horizontal'
,则表示水平拼接。function spliceImage($images, $width, $height, $mode='vertical') {
// 检查参数合法性
if (count($images) < 2 || count($images) > 3) {
throw new InvalidArgumentException('images 参数不合法,长度应为 2 或 3');
}
// 创建一个新的画布,大小为拼接后的图片大小
$canvas = imagecreatetruecolor($width, $height);
// 定义颜色
$white = imagecolorallocate($canvas, 255, 255, 255);
// 填充画布为白色
imagefill($canvas, 0, 0, $white);
// 遍历传递的图片,依次将它们拼接到画布上
$x = 0;
$y = 0;
foreach ($images as $imagePath) {
// 读取图片文件
$image = imagecreatefromjpeg($imagePath);
// 获取图片尺寸
$imageWidth = imagesx($image);
$imageHeight = imagesy($image);
// 计算图片在画布上的位置
if ($mode == 'vertical') {
$y = $y + $imageHeight;
} else {
$x = $x + $imageWidth;
}
// 将图片拼接到画布上
imagecopy($canvas, $image, $x, $y, 0, 0, $imageWidth, $imageHeight);
// 释放内存
imagedestroy($image);
}
// 保存合成的大图
$filename = uniqid() . '.jpg';
imagejpeg($canvas, $filename);
// 释放画布内存
imagedestroy($canvas);
// 返回保存路径
return $filename;
}
try {
// 拼接两张图片
$images = ['image1.jpg', 'image2.jpg'];
$filename = spliceImage($images, 800, 600);
echo "拼接后的图片保存在:" . $filename;
// 拼接三张图片
$images = ['image1.jpg', 'image2.jpg', 'image3.jpg'];
$filename = spliceImage($images, 1200, 800, 'horizontal');
echo "拼接后的图片保存在:" . $filename;
} catch(Exception $e) {
echo 'Error: ' . $e->getMessage;
}
spliceImage()
函数是一个非常有用的 PHP 工具函数,它可以将多张图片合并成一张大图,方便我们实现拼图、海报等应用场景。在使用时只需要传入待拼接图片的路径和一些配置参数即可,非常方便。