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

vinhson發表於2018-08-30

在 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

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

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

Intervention\Image\ImageServiceProvider::class

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

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

釋出配置Laravel 5

php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"

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

1、上傳圖片並儲存
    // 修改指定圖片的大小
$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)->save('images/new_avatar.jpg');

2、上傳圖片生成資料流,不儲存圖片
$image = (string)Image::make($image)->resize(500,500)->encode('png', 75);
$base64_encode = 'data:image/png;base64,' . base64_encode($image);
return '<img src="'.$base64_encode.'">';

3、生成圖片,不儲存
$image = (string)\Image::make($image)->resize(500,500)->encode('png', 75);
$image = \Response::make($image);
return $image->header('Content-Type', 'image/png');

4.具體用法

改變影像尺寸的方法:

resize()
widen()
heighten()
fit()
resizeCanvas()
crop()
trim()

調整影像的方法:

gamma()
brightness()
contrast()
colorize()
greyscale()
invert()
mask()
flip()

應用效果的方法:

filter()
pixelate()
rotate()
blur()

繪畫的方法:

text()
pixel()
line()
rectangle()
circle()
ellipse()

檢索資訊的方法:

width()
height()
mime()
exif()
iptc()

輸出影像資料的方法:

encode()
save()
response()

原文地址:http://laravelacademy.org/post/3585.html

本作品採用《CC 協議》,轉載必須註明作者和本文連結
不要輕易放棄。學習成長的路上,我們長路漫漫,只因學無止境 Don't give up easily. On the way of learning and growing up, we have a long way to go, just because there is no end to learning.

相關文章