下面給大家介紹thinkphp5中圖片處理中遇到的問題,希望對需要的朋友有所幫助!
圖片處理中遇到的問題
我額外把圖片的處理和上傳封裝成了一個類,返回保存的圖片路徑
在圖片返回和保存路徑時不能是絕對路徑。
這樣會導致圖片打不開,應該是相對于這個項目跟目錄的相對路徑
<?php
namespace app\common\vendor;
use think\Image;
use think\Request;
class Picture
{
public function Up($file,$type)//獲取圖片,驗證
{
//處理圖片
$request=new Request();
$saveName=$request->time().'.png';
$image=Image::open($file);
switch($type){
case 'advertise':
$deal=$image->thumb(20,40,6);
$link='public'.DS.'static'.DS.'picture'.DS.$type.DS.$saveName.'.png';
break;
case 'user':
$deal=$image->thumb(40,40,6);
$link='public'.DS.'static'.DS.'picture'.DS.$type.DS.$saveName.'.png';
break;
}
//上傳圖片
if($deal->save(ROOT_PATH.$link)){
//echo $deal->width()."<br/>".$deal->height();
return $link;
}else{
echo "失敗";
}
}
}封裝這個類之后圖片的驗證就需要再控制器中驗證
1、圖片驗證時遇到的問題
我的圖片驗證:
$result = $this->validate(['file' => $file], ['file' => 'require|image|fileExt:png,jpg,gif'], ['file.require' => '請選擇上傳文件','file.image'=>'必須是圖片哦','file.fileExt'=>'文件格式不對']);
我再圖片中驗證就是對這個驗證的不太熟悉,經過了解才知道這些內容的含義
更多的上傳文件驗證規則還包括 驗證規則
file 驗證是否為File對象
image 驗證是否為圖像File對象
image:width,height[,type] 驗證圖像文件的類型和寬高
fileExt:zip,doc,… 驗證文件后綴
fileMime:image/png,… 驗證文件類型
fileSize:1024 驗證文件大小
2、圖片文件上傳方式
這里面上傳的是文件,用Image::open()進行打開圖片,成為圖片格式,這兩種是不同的格式
我們要進行圖片處理所以要先打開圖片在處理在圖片保存,
在thinkphp中保存圖片使用圖片->save(路徑)進行保存
但是如果不用處理就可以直接文件->move(路徑)進行保存






