tp5 生成缩略图片

Posted on 2017-11-23 16:26  pai片儿的  阅读(3303)  评论(0编辑  收藏  举报

我先说下我的思路,先把正常图片存到服务器,再通过代码将服务器上的大图压缩,生成新的小图替代大图

下面上代码

前台HTML代码

<div class="upload-btn">
	<input class="pic-ipt" type="file" accept="image/*" />
</div>

script代码

 

function upload_img(cid){
			var formData = new FormData();
			formData.append("file", $(this).get(0).files[0]);
		    $.ajax({
		        url:'./upload_photo',
		        type:'POST',
		        data:formData,
		        cache: false,
		        contentType: false,
		        processData: false,
		        success:function(data){
		        	console.log(data);
		        }
		    });
		}

php代码   

/**
     * 上传
     */
    public function upload_photo(){
        $file = $this->request->file('file');
        //生成缩略图
        // $file = \think\Image::open($file);
        // $test = $file->thumb(400, 400)->save(ROOT_PATH . 'public' . DS . 'uploads/'.time().'.png');
        // return ['code'=>2,'error'=>$test->getFilename()];
                if(!empty($file)){
                    // 移动到框架应用根目录/public/uploads/ 目录下
                    $info = $file->validate(['size'=>4145728,'ext'=>'jpg,png,gif,jpeg'])->rule('uniqid')->move(ROOT_PATH . 'public' . DS . 'uploads');
                    $error = $file->getError();
                    // return ['code'=>2,'error'=>$error];
                    //验证文件后缀后大小
                    if($error){
                        return ['code'=>2,'error'=>$error];
                        // dump($error);exit;
                    }
                    if($info){
                        // 成功上传后 获取上传信息
                        // 输出 jpg
                        $info->getExtension();
                        // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
                        $info->getSaveName();
                        // 输出 42a79759f284b767dfcb2a0197904287.jpg
                        $photo = $info->getFilename();
                        $imgurl = './public/uploads/'.$photo;//原大图路径,当时我获取的时候费了不少时间
                        $image = \think\Image::open($imgurl);
                        $image->thumb(400, 400,1)->save($imgurl);//生成缩略图、删除原图
                    }else{
                        // 上传失败获取错误信息
                        $file->getError();
                    }
                }else{
                    $photo = '';
                }
        if($photo !== ''){
            return ['code'=>1,'msg'=>'成功','photo'=>$photo];
        }else{
            return ['code'=>404,'msg'=>'失败'];
        }
    }