ThinkPHP5.0 图片上传生成缩略图实例代码说明

前端之家收集整理的这篇文章主要介绍了ThinkPHP5.0 图片上传生成缩略图实例代码说明前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

很多朋友遇到这样一个问题,图片上传生成缩略图,很多人在本机(win)测试成功,上传到linux 服务器后错误

我也遇到同样的问题。网上一查,有无数的人说是服务器临时文件目录权限问题。

几经思考后,发现并非如此。

其根本的原因是,保存到变量的信息是之前的,之后又move移动到了自己指定的目录下,同时临时文件已经不存在。所以再生成缩略图的时候,需要open的,文件地址应该是自己定义的目录+文件名。然而很多实例文档中,还是使用的move 之前的信息。

又加之在win服务器下,move后,指定目录已生成文件,同时临时文件未被删除。所以能用move之前的信息生成缩略图

希望不多的言语能帮助遇到同样问题的你。

下面在通过实例代码给大家介绍ThinkPHP5.0 图片上传生成缩略图方法

代码如下所示:

PHP;"> thumb($width,$height,\think\Image::THUMB_FIXED)->save($thumbName); $data = [ 'access_url' => $imgRootPath . '/' . $whereName . '/' . $filename . '.' . $type,'filename' => $thumbfile,]; return $data; } } }

调用

PHP;"> class Goods { public function upload_sku() { $whereName = 'goods/sku'; $width = 750; $height = 750; $data = Tools::upload_goods_img($whereName,$width,$height); return returnJson(1,'上传成功',$data);; } }

PS:下面在看一段代码tp5中上传图片方法,并生成相应缩略图方法

_req->file("upload_head_image"); //将上传文件移动到public/uploads/user $info = $file->validate(['size'=>5242880,'ext'=>'jpg,jpeg,png'])->move(ROOT_PATH . 'public' . DS . 'uploads' . DS . 'user'); if($info){ $pic = new \app\home\model\User(); $pic_url = $pic->thumbImage($file,$info); $user['portrait'] = 'uploads/user/'.$pic_url; //print_r($pic_url);exit(); }

///model中代码如下
/**

  • [生成用户头像缩略图,180、50]
  • @param [type] $file [获取上传文件$_FILE]
  • @param [type] $pic [上传文件的路径]
  • @return [type] [返回处理后的文件路径]
    */
    public function thumbImage($file,$pic){
    $image = \think\Image::open($file);
    $getSaveName = str_replace('\','/',$pic->getSaveName());
    $portrait_thumbnail_180= 'uploads/user/'.strreplace($pic->getFilename(),'180'.$pic->getFilename(),$getSaveName);
    $image->thumb(180,180,\think\Image::THUMB_CENTER)->save(ROOT_PATH . 'public' . DS . $portrait_thumbnail_180,null,100,true);
    $portrait_thumbnail_80 = 'uploads/user/'.strreplace($pic->getFilename(),'80'.$pic->getFilename(),$getSaveName);
    $image->thumb(80,80,\think\Image::THUMB_CENTER)->save(ROOT_PATH . 'public' . DS . $portrait_thumbnail_80,true);
    $portrait_thumbnail_50 = 'uploads/user/'.strreplace($pic->getFilename(),'50'.$pic->getFilename(),$getSaveName);
    $image->thumb(50,50,\think\Image::THUMB_CENTER)->save(ROOT_PATH . 'public' . DS . $portrait_thumbnail_50,true);
    if ($image) {
    return $getSaveName;
    }
    }

总结

以上所述是小编给大家介绍的ThinkPHP5.0 图片上传生成缩略图实例代码说明,希望对大家有所帮助。程序员遇到问题都会上(编程之家jb51.cc)查找问题解答方法!如果觉得站点还不错,随手转发给程序员朋友一下!

原文链接:https://www.f2er.com/thinkphp/15886.html

猜你在找的ThinkPHP相关文章