在 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 協議》,轉載必須註明作者和本文連結