Intervention Image 图片套件

Laravel 图片套件 Photo Packages: Intervention Image

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'));

参考资料


Intervention Image 图片套件图片处理

Laravel 图片套件 Photo Packages: Intervention Image 图片处理

Intervention Image 图片套件其他图片处理

Laravel 图片套件 Photo Packages: Intervention Image 其他图片处理