Intervention Image 圖片套件

安裝

$ php composer require intervention/image

設定 config/app.php

'providers' => [
	Intervention\Image\ImageServiceProvider::class,
],
'aliases' => [
	'Image' => Intervention\Image\Facades\Image::class,
],

設定檔

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

config/image.php 設定檔

return [
    // 套件支援 "gd", "imagick" 圖片處理驅動
    'driver' => 'gd'
];

記憶體

圖片處理非常消耗記憶體,必須確保 PHP 能夠有權限使用較多的記憶體資源,從 3000 x 2000 像素的圖片 resize 到 300 x 200 像素,可能需要大約 32 MB 的記憶體。

URL 圖片自動操作

Intervention 可以讓你自訂義對指定資料夾的圖片做 Filter 的功能,在 config/imagecache.php 設定檔中,可以設定虛擬的 route

// config/imagecache.php
return [
	'route' => 'img',
];

path 可以指定虛擬的 route 要存取哪些資料夾的圖片資料,設定完成後,所有透過 http://yourhost.com/img/ 網址存取的圖片都會到 public/uploadpublic/images 資料夾去做圖片的存取。

// config/imagecache.php
return [
	'paths' => array(
        public_path('upload'),
        public_path('images')
    ),
];

templates 中可以設定圖片的 filter 種類

return [
	'templates' => array(
        'small' => 'Intervention\Image\Templates\Small',
        'medium' => 'Intervention\Image\Templates\Medium',
        'large' => 'Intervention\Image\Templates\Large',
    ),
];

可以看到 Intervention\Image\Templates\Small 檔案中有 Small filter 的程式,會自動將圖片 fit 到 120x90 的大小

<?php

namespace Intervention\Image\Templates;

use Intervention\Image\Image;
use Intervention\Image\Filters\FilterInterface;

class Small implements FilterInterface
{
    public function applyFilter(Image $image)
    {
        return $image->fit(120, 90);
    }
}

網址的格式是

http://yourhost.com/{route-name}/{template-name}/{file-name}

所以當網址輸入 http://yourhost.com/img/small/xxx.jpg 就會自動去將 public/uploadpublic/images 資料夾下的 xxx.jpg 去做 Small filter 處理,並存在快取中,快取時間可以在 lifetime 中設定。

// config/imagecache.php
return [
	'lifetime' => 43200,
]

Intervention 有提供 originaldownload 這兩個 filter,如果用 http://yourhost.com/img/original/xxx.jpg 可以存取到原始圖片,而用 http://yourhost.com/img/download/xxx.jpg 則可以下載圖片,這是 Intervention 提供的 filter。

建立圖片方式

// create a new image resource from file
$img = Image::make('public/foo.jpg');

// or create a new image resource from binary data
$img = Image::make(file_get_contents('public/foo.jpg'));

// create a new image from gd resource
$img = Image::make(imagecreatefromjpeg('public/foo.jpg'));

// create a new image directly from an url
$img = Image::make('http://example.com/example.jpg');

// create a new image directly from Laravel file upload
$img = Image::make(Input::file('photo'));

參考資料

KeJyun 最新新書推薦
- Laravel 5 for beginner 新手道場:優雅運用框架快速開發 PHP 網站
- Laravel框架开发详解:从零基础到运用框架快速开发PHP网站

Laravel 是 PHP 的框架(Framework),提供了很多開發網站或 API 所需的工具及環境,經過簡單的設定就可以完成資料的處理及顯示,使開發者可以很優雅且快速的開發出各個不同的產品。本書適合有 PHP 基礎的人,但不知道要怎麼選擇框架,或者不用框架的人也能夠明白它的好處。

雖然 WordPress 也能夠架站,但如果有客製化需求,要開發各式各樣的網站,或提供 App 使用的 API,如此一來你只能選擇用框架,而 Laravel 是目前最受歡迎的。

本書將解說為什麼要使用框架,以及理解框架的優缺點後,要怎麼選擇框架,並用框架快速建構一個網站。除非必要,否則書中會避免專業技術用語,盡量使用最生活化易懂的例子及語氣,讓大家更容易進入 Laravel 的世界。

Laravel 5 for beginner 新手道場:優雅運用框架快速開發 PHP 網站

購書連結

Laravel框架开发详解:从零基础到运用框架快速开发PHP网站

購書連結

comments powered by Disqus