搜尋
首頁php框架ThinkPHP怎麼在ThinkPHP專案裡加入圖片尺寸動態裁切功能

以下由thinkphp教學欄位介紹在ThinkPHP專案裡加入圖片尺寸動態裁切功能,希望對需要的朋友有幫助!

怎麼在ThinkPHP專案裡加入圖片尺寸動態裁切功能

在ThinkPHP 專案裡加入圖片尺寸動態裁切功能

ThinkPHP 圖片動態裁切縮放庫

先附上項目網址: https://github.com/top-think/think-glide

Glide 是一個可以幫助你根據指定參數動態的生成圖片內容給瀏覽器的圖片操作庫,從而實現
圖片動態裁剪,打水印等,本庫對Glide 進行了一些友好的包裝與擴展,屏蔽了原生庫的一些底層抽象從而使得ThinkPHP 用戶可以在ThinkPHP 項目中
更好的添加圖片的動態裁剪功能。

Installation

執行下面指令安裝:

$ composer require slince/think-glide

Usage

Quick start

由於從ThinkPHP 5.1.6 開始加入了中間件的功能,所以在

  • ThinkPHP 5.1.6 以上版本使用middleware 註冊:

    開啟application/middleware.php 檔案(如果不存在建立即可),註冊middleware:

    return [
        //...
    
        \Slince\Glide\GlideMiddleware::factory([
            'source' => __DIR__ . '/../img',
        ])
    ];

    這種方式比較簡單,也是建議的方式;

  • ThinkPHP 5.1.0 以上5.1.6 以下版本:

    不支援middleware,所以啟用過程要複雜一點,我們用下面方式來妥協:

    // 在 /route/route.php 注册下面路由
    Route::get('images/:file', 'index/handleImageRequest');
    
    //在控制器 index 里创建action
    public function handleImageRequest()
    {
        $middleware = \Slince\Glide\GlideMiddleware::factory([
            'source' => App::getRootPath() . '/img',
        ]);
        
        return $middleware(app('request'), function(){
            return app('response');
        });
    }

source 是你本地圖片文件夾的位置,假設該目錄下有圖片user.jpg, 開啟瀏覽器存取下面連結:

http://youdomain.com/images/user.jpg?w=100&h=100

即可得到縮小後的圖片。

參數說明

##說明是否必選source#string本機資料夾位置#是快取檔案位置,預設在runtime/glide快取時間,範例 2 daysstring##onExceptioncallable 異常處理handler否string路由前綴,當配對到該前綴時中間件開始執行,預設是/images
參數名稱 #類型
##cache string
下面 cacheTime string
, 快取期間多次要求會自動回應304 #signKey
安全簽章 #否
baseUrl

#否


安全簽章

##不開啟安全性簽章的情況下使用者可以調整query裡面的參數自行對圖片進行裁剪,如果你不打算這麼做的話,你可以透過

signKey

進行校驗,

\Slince\Glide\GlideMiddleware::factory([
    'source' => __DIR__ . '/../img',
    'signKey' => 'v-LK4WCdhcfcc%jt*VC2cj%nVpu+xQKvLUA%H86kRVk_4bgG8&CWM#k*'
])

這種情況下使用者自行調整參數將會無效;產生安全的URL:<pre class="brush:php;toolbar:false">echo app('glide.url_builder')-&gt;getUrl('user.jpg', ['w' =&gt; 100, 'h' =&gt; 100]); //你会得到如下链接:/images/user.jpg?w=100&amp;h=100&amp;s=af3dc18fc6bfb2afb521e587c348b904</pre>異常處理

#如果使用者存取了一張不存在的圖片或沒有進行安全校驗,系統會拋出異常,你可以透過onException 進行取代預設行為:

\Slince\Glide\GlideMiddleware::factory([
    'source' => __DIR__ . '/../img',
    'signKey' => 'v-LK4WCdhcfcc%jt*VC2cj%nVpu+xQKvLUA%H86kRVk_4bgG8&CWM#k*',
    'onException' => function(\Exception $exception, $request, $server){
    
        if ($exception instanceof \League\Glide\Signatures\SignatureException) {
            $response = new Response('签名错误', 403);
        } else {
            $response = new Response(sprintf('你访问的资源 "%s" 不存在', $request->path()), 404);
        }
        
        return $response;
    }
])

注意該閉包必須傳回一個

think\Response

實例;

Quick reference

不只支援裁剪,glide還支援其它操作,只要傳遞對應參數即可,請參考這裡查看支援的參數:
http://glide.thephpleague.com/1.0/api/ quick-reference/

相關推薦:
最新的10個thinkphp影片教學############

以上是怎麼在ThinkPHP專案裡加入圖片尺寸動態裁切功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),