ThinkPHP图片处理(压缩、水印)

2020-05-22  本文已影响0人  十万个魏什么啊

图片压缩

我们经常会碰到一个问题,当用户发表动态上传图片或上传头像时,会选择手机里拍摄的照片。但是现在手机像素高,拍摄的照片动辄几M,我们如果把一个几M的图片存到服务器,后续的每次读取都会造成极差的用户体验,因此需要进行图片压缩处理。

public function upload_img(){
        $file = request()->file('image');
        // dump($file);die;
        // 将前端传过来的图片移动到项目目录下
        $info = $file->move('./upload/mobile');
        // dump($info);
        if($info){
            $file_edit = $info->getInfo();
            // dump($file_edit);
            // *我们这里通过图片的大小判断图片是否需要被压缩,当然数值可以更改为你需要的
            if($file_edit['size'] > 100000){// 大于100K的图片进行处理
                // 获取上传的图片,进行图片压缩
                $image = \think\Image::open($info);
                // 保存图片的路径处理
                $date = date('Ymd');
                $name = $info->getSavename();
                $url_edit = './upload/mobile/'.$name;
                // dump($url);die;
                // 保存
                // 默认会按比例保存,但是最大宽度、高度不超过thumb(400, 400)设定值
                $img_edit = $image->thumb(400, 400)->save($url_edit);
                $url = $name;
            }else{
                $url = $info->getSavename();
            }
            return $this->json_success('上传成功', $url);
        }else{
            // 上传失败获取错误信息
            return $this->json_error('上传失败');
        }     
    }

图片加水印

public function add(){
    if ($this->request->isPost()) {
            $data     = $this->request->post();
             // 获取上传成功的图片路径
             $roth = './upload/'.$data['photo'];
             // 打开图片
             $image = \think\Image::open($roth);
             // 加图片水印,其中water.png是已经做好的水印图片放在根目录下
             $image->water('./water.png',\think\Image::WATER_NORTHWEST)
                ->save($roth);

             dump($data);die;
             .....
    }
}

更多ThinkPHP5.1关于图片处理操作可参考 点击跳转

上一篇 下一篇

猜你喜欢

热点阅读