首頁 >php框架 >ThinkPHP >解決thinkphp5圖片處理遇到的問題

解決thinkphp5圖片處理遇到的問題

藏色散人
藏色散人轉載
2021-05-18 16:46:433223瀏覽

以下由thinkphp教學專欄為大家介紹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().&#39;.png&#39;;
        $image=Image::open($file);
        switch($type){
            case &#39;advertise&#39;:
                $deal=$image->thumb(20,40,6);
                $link=&#39;public&#39;.DS.&#39;static&#39;.DS.&#39;picture&#39;.DS.$type.DS.$saveName.&#39;.png&#39;;
                break;
            case &#39;user&#39;:
                $deal=$image->thumb(40,40,6);
                $link=&#39;public&#39;.DS.&#39;static&#39;.DS.&#39;picture&#39;.DS.$type.DS.$saveName.&#39;.png&#39;;
                break;
        }
        //上传图片
        if($deal->save(ROOT_PATH.$link)){
            //echo $deal->width()."<br/>".$deal->height();
            return $link;
        }else{
            echo "失败";
        }
    }
}

封裝這個類別之後圖片的驗證就需要再控制器中驗證

1、圖片驗證時遇到的問題

我的圖片驗證:

    $result = $this->validate([&#39;file&#39; => $file],
        [&#39;file&#39; => &#39;require|image|fileExt:png,jpg,gif&#39;],
        [&#39;file.require&#39; => &#39;请选择上传文件&#39;,&#39;file.image&#39;=>&#39;必须是图片哦&#39;,&#39;file.fileExt&#39;=>&#39;文件格式不对&#39;]);

我再圖片中驗證就是對這個驗證的不太熟悉,經過了解才知道這些內容的意義

更多的上傳檔案驗證規則也包含驗證規則

  • file 驗證是否為File物件
  • image 驗證是否為映像File物件
  • image:width,height[,type] 驗證映像檔的類型和寬高
  • fileExt:zip,doc,… 驗證檔案後綴
  • #fileMime:image /png,…驗證文件類型
  • fileSize:1024 驗證檔案大小

2、圖片檔案上傳方式

這裡面上傳的是文件,用Image: :open()進行開啟圖片,成為圖片格式,這兩種是不同的格式

我們要進行圖片處理所以要先打開圖片在處理在圖片保存,

在thinkphp中儲存圖片使用圖片->save(路徑)進行儲存

但是如果不用處理就可以直接檔案->move(路徑)進行儲存

#

以上是解決thinkphp5圖片處理遇到的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除