系统需求 PHP >= 5.3 Fileinfo Extension GD Library (>=2.0) … or … Imagick PHP extension (>=6.5.7)
安装部署 Integration/image 在 composer.json [require] 节增加,之后执行 composer update "intervention/image": "2.0.15"
Laravel 配置 安装部署 Integration/image 完成后,打开配置文件 config/app.php 在相应位置添加代码,然后 Image 类就能自动加载并可供使用了。其功能强大到可以处理你的几乎所有图片处理需求。
use Intervention\Image\Facades\Image;
he GD library does not support custom fonts. You are supposed to use Imagick. Go to config/image.php and edit the driver value to 'imagick' (after you actually install the extension for it):
'driver' => 'imagick' 要安装imagick扩展
asset('/web/fonts/OpenSans-Regular.ttf') returns an URL. You have to provide a path. Use public_path('web/fonts/OpenSans-Regular.ttf') instead. //一定要用绝对路径 不然报错 GD Warning: imagettfbbox(): Could not find/open font
给图片添加文字水印时,中文显示乱码 的解决办法 :一定要引用GD支持的中文字体文件 并 转UTF-8
$fontfile = "simkai.ttf"; /* $fontfile 字体的路径,视操作系统而定,可以是 simhei.ttf(黑体) , SIMKAI.TTF(楷体) , SIMFANG.TTF(仿宋) ,SIMSUN.TTC(宋体&新宋体) 等 GD 支持的中文字体*/$str = iconv('GB2312','UTF-8','php自学网'); /*将 gb2312 的字符集转换成 UTF-8 的字符*/
//服务提供器 'Intervention\Image\ImageServiceProvider' //别名配置 'Image' => 'Intervention\Image\Facades\Image' 配置设置 默认情况下, Integration/Image 使用PHP的GD库扩展。如果你想切换到 imagick,你可以使用 php artisan 创建一个配置文件以添加相应的配置。 $ php artisan config:publish intervention/imag 基本使用 这里列出几个基本功能,更详细使用说明请查看相关接口文档。1、显示一张图片 Route::get('/', function() { $img = Image::make('foo.jpg')->resize(300, 200); return $img->response('jpg'); }); 2、读取一个图片文件 $img = Image::make('foo/bar/baz.jpg'); 3、绘制一张图片 $img = Image::canvas(800, 600, '#ccc'); 4、编辑一张图片 $img = Image::make('foo.jpg')->resize(320, 240)->insert('watermark.png');
安装:
需求:
PHP >= 5.4
Fileinfo 扩展
GD库 >= 2.0
Imagick 扩展 >=6.5.7
composer安装:
composer require intervention/image
laravel配置:
1.编辑 config/app.php
$providers 添加 'Intervention\Image\ImageServiceProvider::class'
$aliases 添加 ''Image' => Intervention\Image\Facades\Image::class'
2.默认使用的是 'GD' 库,想修改的话,需要配置驱动,我们来生成配置文件:
php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"
生成 config/image.php 配置文件
3.PHP涉及到的配置项:
memory_limit - 最大内存限制
upload_max_filesize - 如果上传图片时,可能修改
-----
其实,可能还有好多
max_execution_time - 最大执行时间
...
基本使用:
1.使用 Intervention\Image\ImageManager - 图片管理类
use Intervention\Image\ImageManager;
$manager = new ImageManager(array('driver' => 'imagick'));
$manager->make('public/foo.jpg');
2.使用 ImageManager 的静态版本
use Intervention\Image\ImageManagerStatic as Image;
Image::configure(array('driver' => 'imagick')); ------- api中未出现此方法
Image::make('public/foo.jpg');
HTTP响应:
1.将图像直接返回到用户浏览器的最简单的方法是输出response()方法。 它将根据当前图像自动发送HTTP头,并输出编码的图像数据。
$img = Image::canvas(800, 600, '#ff0000');
echo $img->response('jpg', 70);
2.手动发送HTTP响应
$img = Image::canvas(800, 600, '#ff0000');
header('Content-Type: image/png');
echo $img->encode('png');
在laravel中,同上面的2种方法一样:
3.
$img = Image::canvas(800, 600, '#ff0000');
return $img->response();
4.
$img = Image::canvas(800, 600, '#ff0000');
$response = Response::make($img->encode('png'));
$response->header('Content-Type', 'image/png');
return $response;
图片上传:
1.直接从 $_FILES 中,获取 'tmp' 临时图片数据
$img = Image::make($_FILES['image']['tmp_name']); // Image::make() 支持这种方式
$img->fit(300, 200);
$img->save('public/bar.jpg');
2.在laravel中处理图片上传
Image::make(Input::file('photo')); // Input::file() 来获取$_FILES
图片过滤器:
图片过滤器,给了我们非常有用的方式,将多个图像转换命令集合在一个专用类中。(可将多个图像处理步骤,封装成一个过滤器)。
Intervention/image,提供了基本接口(Intervention\Image\Filters\FilterInterface),所有的过滤器都需要实现它。
调用过滤器:
$img = Image::make('foo.jpg');
$img->filter(new DemoFilter(5));
定义过滤器:
src/Intervention/Image/Filters/DemoFilter.php
namespace Intervention\Image\Filters;
class DemoFilter implements FilterInterface
{
/**
* Default size of filter effects
*/
const DEFAULT_SIZE = 10;
/**
* Size of filter effects
*
* @var integer
*/
private $size;
/**
* Creates new instance of filter
*
* @param integer $size
*/
public function __construct($size = null)
{
$this->size = is_numeric