PHP使用imagecopyresampled拼接图片

先上代码:

$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:原图要载入的高度

你可能感兴趣的:(php)