佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > ThinkPHP5.0 圖片上傳生成縮略圖實(shí)例代碼說(shuō)明

ThinkPHP5.0 圖片上傳生成縮略圖實(shí)例代碼說(shuō)明

熱門標(biāo)簽:阿里云 Linux服務(wù)器 Mysql連接數(shù)設(shè)置 團(tuán)購(gòu)網(wǎng)站 銀行業(yè)務(wù) 服務(wù)器配置 電子圍欄 科大訊飛語(yǔ)音識(shí)別系統(tǒng)

很多朋友遇到這樣一個(gè)問(wèn)題,圖片上傳生成縮略圖,很多人在本機(jī)(win)測(cè)試成功,上傳到linux 服務(wù)器后錯(cuò)誤。

我也遇到同樣的問(wèn)題。網(wǎng)上一查,有無(wú)數(shù)的人說(shuō)是服務(wù)器臨時(shí)文件目錄權(quán)限問(wèn)題。

幾經(jīng)思考后,發(fā)現(xiàn)并非如此。

其根本的原因是,保存到變量的信息是之前的,之后又move移動(dòng)到了自己指定的目錄下,同時(shí)臨時(shí)文件已經(jīng)不存在。所以再生成縮略圖的時(shí)候,需要open的,文件地址應(yīng)該是自己定義的目錄+文件名。然而很多實(shí)例文檔中,還是使用的move 之前的信息。

又加之在win服務(wù)器下,move后,指定目錄已生成了文件,同時(shí)臨時(shí)文件未被刪除。所以能用move之前的信息生成縮略圖。

希望不多的言語(yǔ)能幫助遇到同樣問(wèn)題的你。

下面在通過(guò)實(shí)例代碼給大家介紹ThinkPHP5.0 圖片上傳生成縮略圖的方法。

代碼如下所示:

?php
namespace app\common\controller;
use app\common\model\Goods;
class Tools
{
 public static function upload_goods_img($whereName="", $width="", $height="")
 {
 // 打開圖片的相對(duì)路徑
 $imgpath = config('img_path');
 // 絕對(duì)路徑
 $imgRootPath = config('imgRootPath');
 $storeId = '自定義';
 $merchantId = '自定義';
 $old_filename = $storeId . $merchantId . time();
 $filename = $storeId . $merchantId . time() . mt_rand(1000, 9999);
 $type = Goods::upload($whereName, $old_filename);
 if($type) 
 {
  $savepath = $imgRootPath . '/' . $whereName . '/' . $filename . '.' . $type;
  $thumbfile = $filename . '.' . $type;
  $thumbName = $imgpath . '/' . $whereName . '/' . $thumbfile;
  $image = \think\Image::open($imgpath . '/'. $whereName .'/' . $old_filename . '.' . $type);
  $image->thumb($width, $height, \think\Image::THUMB_FIXED)->save($thumbName);
  $data = [
  'access_url' => $imgRootPath . '/' . $whereName . '/' . $filename . '.' . $type,
  'filename' => $thumbfile,
  ];
  return $data;
 }
 } 
}

調(diào)用:

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中上傳圖片方法,并生成相應(yīng)縮略圖的方法

//接收上傳文件的name
$file = $this->_req->file("upload_head_image");
//將上傳的文件移動(dòng)到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/'.str_replace($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/'.str_replace($pic->getFilename(),'80_'.$pic->getFilename(),$getSaveName);
 $image->thumb(80,80,\think\Image::THUMB_CENTER)->save(ROOT_PATH . 'public' . DS . $portrait_thumbnail_80,null,100,true);
 $portrait_thumbnail_50 = 'uploads/user/'.str_replace($pic->getFilename(),'50_'.$pic->getFilename(),$getSaveName);
 $image->thumb(50,50,\think\Image::THUMB_CENTER)->save(ROOT_PATH . 'public' . DS . $portrait_thumbnail_50,null,100,true);
if ($image) {
  return $getSaveName;
 }
 }

總結(jié)

以上所述是小編給大家介紹的ThinkPHP5.0 圖片上傳生成縮略圖實(shí)例代碼說(shuō)明,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • Thinkphp自定義生成縮略圖尺寸的方法
  • PHP自動(dòng)生成縮略圖函數(shù)的源碼示例
  • thinkphp5上傳圖片及生成縮略圖公共方法(分享)
  • thinkPHP實(shí)現(xiàn)上傳圖片及生成縮略圖功能示例
  • PHP生成縮略圖實(shí)例講解

標(biāo)簽:棗莊 衡水 廣元 大理 衢州 萍鄉(xiāng) 江蘇 蚌埠

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ThinkPHP5.0 圖片上傳生成縮略圖實(shí)例代碼說(shuō)明》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    白玉县| 永顺县| 宜君县| 馆陶县| 北海市| 乐清市| 太保市| 汉中市| 房产| 霸州市| 集贤县| 普格县| 旺苍县| 徐州市| 北碚区| 九江县| 南漳县| 黔南| 桐庐县| 松溪县| 葵青区| 中超| 龙泉市| 淮南市| 沾化县| 湘潭县| 阳泉市| 洱源县| 盐亭县| 金湖县| 崇左市| 和田县| 武安市| 海林市| 湟中县| 长汀县| 汾阳市| 当涂县| 册亨县| 胶州市| 湘潭县|