17.ThinkPHP 扩展库:图像处理--生成缩略图

官方手册:https://www.kancloud.cn/manual/thinkphp5_1/354123

安装扩展

使用Composer安装ThinkPHP5的图像处理类库:

composer require topthink/think-image

image-20200530155751608

生成缩略图

使用thumb方法生成缩略图,例如:

$image = 	hinkImage::open('./image.png');
// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.png
$image->thumb(150, 150)->save('./thumb.png');

注意打开生成缩略图的图片,会被删除保留缩略图

例:

自定义函数获取public路径

<?php

// 应用公共文件
//得到public路径地址
//DIRECTORY_SEPARATOR是php的内部常量,用于显示系统分隔符的命令,不需要任何定义与包含即可直接使用
//window 就是 linux上就是/
function public_path(){
    return dirname(__DIR__).DIRECTORY_SEPARATOR.'public';
}

image-20200530162020261

控制器中使用

<?php

namespace appadmincontroller;
use thinkController;
use thinkImage;
use thinkRequest;
class Upload extends Controller
{
    //上传界面
    public function index(){
        return view('admin@/upload/index');
    }

    //上传处理
    public function upload(Request $request){
        //dump($request->file());
        $file = $request->file('pic');
        // 移动到框架应用根目录/uploads/ 目录下
        $info = $file->move( './uploads');
        if($info){
            $savename = '/uploads/'.str_replace('\','/', $info->getSaveName());

            //打开图片
            $image = Image::open(public_path().$savename);
            // 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.png
            $image->thumb(150, 150)->save(public_path().$savename);

            return json(['static' => 0, 'msg' => $savename]);
        }
        return json(['static' => 1, 'msg' => $file->getError()]);
    }
}

image-20200530162008701

运行结果

image-20200530162228918

其他还有图像裁剪,翻转,水印等看官方手册即可。

原文地址:https://www.cnblogs.com/makalochen/p/12993344.html