PHP使用GD库合并图片,做出拼图效果(炒鸡详细,傻瓜教程)

起因:公司的小程序想要一个把多图拼合在一起的功能,无奈搞了好久,各种canvas,都没成。既然前台搞不了,那就由后台来搞吧

正题:

首先php要开启GD库,这个不多说

先说咱们要用到的几个函数

1、Imagecreatefromjpeg() 2、getimagesize() 3、imagecreatetruecolor() 4、imagecopyresampled() 5、imagecopy() 6、Imagejpeg() 

简单说一下这几个是干啥的,通俗易懂接地气的那种

1是要把一张图片放到一个画布上2是获取你的图片信息,宽高类型等等3是创建一个画布4把图片等比例缩放并放到一个新画布上5,A画布放到B画布上6把画布输出为图片

开始贴上我的代码

$images = Yii::$app->request->post('canvas');
            $height = 0;
            $width = 720;
            $image = explode(',',$images);###因为我接受的是字符串所以把字符串弄成了数组
            foreach ($image as $k=>$v){
                    $image[$k] = substr($v,0,-1).'2';
            }
            // 获取图片基本信息
            foreach ($image as $k=>$v){
                $source[$k]['source'] = Imagecreatefromjpeg($v);
                $res_image[$k] = getimagesize($v);
            }
            //获取新画布的总高度
            foreach ($res_image as $k=>$v){
                $new_height = $v[1]*1000/$v[0];###我的新画布固定宽度为1000
                $height += $new_height;###计算新画布的高度
                $res_image[$k]['height'] = $new_height;

                //等比例缩放
                $image_p[$k] = imagecreatetruecolor(1000, $new_height);
                imagecopyresampled($image_p[$k], $source[$k]['source'], 0, 0, 0, 0, 1000, $new_height, $v[0], $v[1]);
            }
            //创建一个新的画布
            $new_image = imagecreatetruecolor($width,$height);
            //向画布添加图片
            $dst_x = 0;
            $dst_y = 0;
            foreach ($res_image as $k=>$v){
                imagecopy($new_image,$image_p[$k],$dst_x,$dst_y,0,0,$v[0],$v[1]);###参数挺多可以参照官方文档呦http://php.net/manual/zh/book.image.php
                $dst_y += $v['height'];
            }
            //添加地址
            $date = date('Ymd', time());
            $dir = '../../upload/pintu/' . $date;
            if (!is_dir($dir)) {
                @mkdir("../../upload/pintu/$date");
            }
            $name = uniqid();
            //生成图片
            $res_data = Imagejpeg($new_image, $dir.'/'.$name.'.jpg',100);
最后写的有点潦草,还可以继续优化。但是功能已经实现了


文章来源: PHP使用GD库合并图片,做出拼图效果(炒鸡详细,傻瓜教程)

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:PHP使用GD库合并图片,做出拼图效果(炒鸡详细,傻瓜教程)