先上代码:
$pic_list = $_POST['pintubox'];//图片列表,这里是一个图片列表的array
$img_info = array();//图片信息
$tmp = 1;
$width = 720;//生成的图像宽度
$pic_count = count($pic_list);//图片总数
$img_info['width'] = $width;
$img_info['height'] = 0;
//首先等比例缩放,让所有图片宽度一样,计算出图片等比例缩放后的长和宽
for ($i = 0; $i < $pic_count; $i++) {
$img_info[$i]['url'] = $pic_list[$i];
$img_info[$i] = getimagesize($img_info[$i]['url']);
$tmp = ($img_info[$i][0]) / $width;
$img_info[$i]['width'] = $width;
$img_info[$i]['height'] = ($img_info[$i][1]) / $tmp;
$img_info[$i]['url'] = $pic_list[$i];
$img_info[$i]['x'] = 0;
$img_info[$i]['y'] = $img_info['height'];
$img_info['height'] += $img_info[$i]['height'];
}
$new_img = ImageCreateTrueColor($img_info['width'], $img_info['height']); // 创建一个画布,作为拼接后的图片
for ($i = 0; $i < $pic_count; $i++) {
//以下的三行代码 缩放原图
$img_r = imagecreatefromjpeg($img_info[$i]['url']); // 获取原图
$dst_r = ImageCreateTrueColor($img_info[$i]['width'], $img_info[$i]['height']); // 获取新图
imagecopyresampled($dst_r, $img_r, 0, 0, 0, 0,
$img_info[$i]['width'], $img_info[$i]['height'], $img_info[$i][0], $img_info[$i][1]);
//把缩放后的图片放在画布上
imagecopyresampled($new_img, $dst_r, $img_info[$i]['x'], $img_info[$i]['y'], 0, 0,
$img_info['width'], $img_info[$i]['height'], $img_info[$i]['width'], $img_info[$i]['height']);
imagedestroy($dst_r);//销毁掉缩放的图片
}
//获取时间戳,以时间戳的名字存放
$name = strval(time());
$img_path = "/var/www/huodong/attachment/images/5/pic_live/pintu/" . $name . ".jpg";
//存放拼接后的图片到本地
imagejpeg($new_img, $img_path);
实现效果
所有图片按照从上到下拼接起来,当然如果你想做成九宫格之类的形式也是可以的只需要调整imagecopyresampled()的参数就可以。
imagecopyresampled()用法
imagecopyresampled ( resource dstimage,resourcedstimage,resourcesrc_image , int dstx,intdstx,intdst_y , int srcx,intsrcx,intsrc_y , int dstw,intdstw,intdst_h , int srcw,intsrcw,intsrc_h )
$dst_image:新建的图片
$src_image:需要载入的图片
$dst_x:新图从x坐标开始处理
$dst_y:新图从y坐标开始处理
$src_x:载入图从x坐标开始处理
$src_y:载入图从y坐标开始处理
$dst_w:设定载入的原图的宽度(在此设置缩放)
$dst_h:设定载入的原图的高度(在此设置缩放)
$src_w:原图要载入的宽度
$src_h:原图要载入的高度