Thinkphp上传图片及形成缩略图

一、上传图片的HTML代码

<!DOCTYPE html>
<html>  
    <head>  
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
        <title>upload</title>  
    </head>  
    <body>  
        <img src="{$Think.const.IMG_URL}Uploads/{$name}"  οnerrοr="this.src='{$Think.const.IMG_URL}Uploads/default.jpg'"/>  
     
    <form method='post' enctype="multipart/form-data">  
        <input type='file' name="image" accept='image/jpg,image/jpeg,image/gif,image/png'/><br/>  
        <input type='submit' value="upload"/>  
    </form>  
    </body>  
</html>

一定要注意的是,form表单的

enctype="multipart/form-data"
属性一定要写上


二、上传图片后再生成缩略图保存

$upload->rootPath的默认根目录为当前项目下的Uploads文件夹,即:"./Uploads/";可以手动创建,也可以将根目录修改为已经存在的目录。

if (!empty($_FILES)) {  
        $upload = new \Think\Upload();// 实例化上传类  
        $upload->maxSize = 2048000;             //上传文件最大大小  
        $upload->allowExts = array('jpg','jpeg','gif','png');//允许上传文件类型  
        $upload->rootPath = "./Application/Home/Public/";  //文件保存根目录,可以自定义  
        $upload->savePath = "Uploads/";                //文件保存目录  
        $upload->replace = 'true';                      //可以替换相同名称的文件  
        $upload->saveName = 'image';  
        $file = $upload->upload()['image'];  
        if(!$file){  
            $this->error($upload->getError());//获取失败信息  
        } else {  
            $img = "./Application/Home/Public/".$file['savepath'].$file['savename'];//获取文件上传目录  
            $image = new \Think\Image();   
            $image->open($img);    //打开上传图片  
            $image->thumb(102, 142,\Think\Image::IMAGE_THUMB_FIXED)->save($desitination.'thumb.jpg');//生成缩略图  
        }  
}

三、生成缩略图之后再保存缩略图

图片上传过程中,直接对上传文件暂存目录下的图片进行处理,生成缩略图并保存,则原图片就不再保存,减少内存的消耗。

public function img(){  
        $name = $_FILES['image']['tmp_name'];//从上传文件暂存目录下读取文件  
        $image = new \Think\Image();   
        $image->open($name);//生成缩略图  
        $image->thumb(102, 142,\Think\Image::IMAGE_THUMB_FIXED)->save('./image.jpg');  
   }

并且支持多种类型的缩略图生成,设置包括Think\Image的下列常量或者对应的数字:

IMAGE_THUMB_SCALE     =   1 ; //等比例缩放类型
IMAGE_THUMB_FILLED    =   2 ; //缩放后填充类型
IMAGE_THUMB_CENTER    =   3 ; //居中裁剪类型
IMAGE_THUMB_NORTHWEST =   4 ; //左上角裁剪类型
IMAGE_THUMB_SOUTHEAST =   5 ; //右下角裁剪类型
IMAGE_THUMB_FIXED     =   6 ; //固定尺寸缩放类型

附手册图像处理:http://document.thinkphp.cn/manual_3_2.html#image


实例:

保存到同一文件夹里面的大图和缩略图

public function upload(){

        $upload = new Upload();  // 实例化Upload
        $upload->maxSize = 0;  // 限制上传文件最大值
        $upload->exts = array('jpg','jpeg','gif','png');  // 限制上传文件格式
        $upload->savepath ='./';  //根目录,需要手动创建一个 Uploads 文件夹
        $info=$upload->Upload(); // Upload方法开始上传,返回上传信息
        if (!$info) {
            $this->error($upload->getError());
        }else{
            //$this->success('上传成功!');
            foreach ($info as $file) {
                $path = '/Uploads/'.$file['savepath'].$file['savename']; // 获取文件路径和文件名
            }
            $image = new \Think\Image(); 
            $image->open('.'.$path);  // 打开上传的图片
            // 按照原图的比例生成一个最大为20*20的缩略图并保存,前缀为"thumb_"
            //$thumbPath = '/Uploads/thumb/'.$file['savepath'].'thumb_'.$file['savename'];
            $thumbPath = '/Uploads/'.$file['savepath'].'thumb_'.$file['savename'];
            $image->thumb(20, 20)->save('.'.$thumbPath);
        }
        return($path);
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值