1. 程式人生 > >使用 Intervention/image 對 Laravel 專案中的圖片進行處理

使用 Intervention/image 對 Laravel 專案中的圖片進行處理

在 Laravel 5 中整合 Intervention Image 實現對圖片的建立、修改和壓縮處理

Intervention Image是一個PHP圖片操作處理庫,為圖片建立、修改及壓縮等處理提供了便捷方式。此外,還提供了服務提供者和門面以便整合到Laravel應用中。

1、安裝

安裝Intervention Image之前,需要確保PHP版本>=5.4並且安裝了Fileinfo擴充套件,以及GD庫(>=2.0)或者Imagick擴充套件(>=6.5.7)。

我們使用Composer在命令列安裝最新版本的Intervention Image:

composer require intervention/image

執行命令後,會在專案composer.json檔案中的require中增加如下圖所示:

2、整合到Laravel

前面已經提到,Intervention Image 提供了相應的服務提供者和門面以便整合到Laravel應用。

安裝好Intervention Image後,開啟config/app.php,註冊如下服務提供者到$providers陣列:

Intervention\Image\ImageServiceProvider::class

然後新增如下門面到$aliaes陣列:

'Image' => Intervention\Image\Facades\Image::class

這樣我們就可以在Laravel應用程式碼中直接使用Image了。

3. 基礎用法

使用時,如果laravel版本較高的已經引入名稱空間的,需要在使用的時候,引用一下Image的名稱空間,否則找不到該類。

// 修改指定圖片的大小
$img = Image::make('images/avatar.jpg')->resize(200, 200);

// 插入水印, 水印位置在原圖片的右下角, 距離下邊距 10 畫素, 距離右邊距 15 畫素
$img->insert('images/watermark.png', 'bottom-right', 15, 10);

// 將處理後的圖片重新儲存到其他路徑
$img->save('images/new_avatar.jpg');

/* 上面的邏輯可以通過鏈式表示式搞定 */
$img = Image::make('images/avatar.jpg')->resize(200, 200)->insert('images/new_avatar.jpg', 'bottom-right', 15, 10);

4.具體用法

讀取影象

Intervention Image讀取影象超級簡單,你只需要給定一個路徑到make()方法,其他的煩心事Intervention Image來搞定。

從檔案讀影象

$img = Image::make('photo.jpg');

 這個方法是高度定製的,不只能用路徑,下面的輸入格式都可以:

  • 基於檔案系統的影象路徑
  • 影象URL (allow_url_fopen 必須啟用).
  • 二進位制影象資料
  • Data-URL 編碼影象資料
  • Base64 編碼影象資料
  • PHP資源型別的gd.(在使用 GD 驅動時)
  • Imagick例項 (在使用 Imagick 驅動時)
  • Intervention\Image\Image 例項
  • SplFileInfo 例項 (用來處理器Laravel 檔案上傳 通過 Symfony\Component\HttpFoundation\File\UploadedFile)

可以去API文件看更多例子。

建立影象
如果想生成一幅空影象,可以用canvas()並傳入寬,高。背景顏色是可選的,如果沒有傳入,預設是透明背景。 建立新的影象與背景顏色

$img = Image::canvas(800, 600, '#ccc');

 建立新影象的更多例子,去看API文件。

編輯影象 在使用 make() 或者 canvas()建立一個新影象例項後,可以使用其他所有的方法到這個例項。 通常每個命令返回一個修改後的Intervention\Image\Image例項,所以可以鏈式呼叫。

方法鏈:
$img = Image::make('foo.jpg')->resize(320, 240)->insert('watermark.png');

 看看下面的列表的一些方法。

改變影象尺寸的方法: 調整影象的方法: 應用效果的方法: 繪畫的方法: 檢索資訊的方法: 輸出影象 從一個影象物件建立實際影象資料,通過方法 encode 生成編碼影象資料,或者用 save 寫一個影象到檔案系統,也可以用當前影象資料傳送一個HTTP響應。

儲存圖片到檔案系統:
Image::make('foo.jpg')->resize(300, 200)->save('bar.jpg');

輸出影象資料的方法: