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
然后添加如下门面到$aliases数组:
'Image' => Intervention\Image\Facades\Image::class
这样我们就可以在Laravel应用代码中直接使用Image了。
3、配置
默认情况下,Intervention Image使用PHP的GD库扩展处理所有图片,如果你想要切换到Imagick,你可以将配置文件拉到应用中:
php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravelRecent"
这样对应的配置文件会被拷贝到config/image.php
,这样你可以在该配置文件中修改图片处理驱动配置。
4、使用示例
# 读取图片
Route::get('/', function()
{
$img = Image::make('foo.jpg')->resize(300, 200);
return $img->response('jpg');
});
// import the Intervention Image Manager Class
use Intervention\Image\ImageManagerStatic as Image;
// 设置图像驱动,默认gd
Image::configure(array('driver' => 'imagick'));
// 读取文件并调整大小为 200 * 200
$img = Image::make('images/avatar.jpg')->resize(200, 200);
// 插入水印, 水印图片是 images/watermark.png, 位置在原图片的右下角, 距离下边距 10 像素, 距离右边距 15 像素
$img->insert('images/watermark.png', 'bottom-right', 15, 10);
# 添加文字水印
$img->text('The quick brown fox jumps over the lazy dog.', 120, 100);
// 将处理后的图片重新保存到其他路径
$img->save('images/new_avatar.jpg');
/* 上面的逻辑可以通过链式表达式搞定 */
$img = Image::make('images/avatar.jpg')->resize(200, 200)->insert('images/new_avatar.jpg', 'bottom-right', 15, 10);
# 绘制图片
$img = Image::canvas(800, 600, '#ccc');
# 上传图片处理
$img = Image::make($_FILES['image']['tmp_name']);
Image::make(Input::file('photo'))->resize(300, 200)->save('foo.jpg'); # laravel 中
# 旋转图片
$img->rotate(-45);
# 压缩图片
$img = Image::make('foo.jpg')->resize(500, 400);
// 只改变宽度,高度不变,注意:会变形
$img->resize(300, null);
// 宽度为300,高度自动调整,不会变形
$img->resize(300, null, function ($constraint) {
$constraint->aspectRatio();
});
扩展的 make 方法为创建一个新的图像资源,他可以接收多种图片资源类型:
- 文件系统中的图片路径
- 图片url地址(allow_url_fopen 必须启用)
- 二进制图像数据
- Data-URL编码的图片
- Base64编码的图片
- 类型为GD的 PHP 资源(当在使用 GD 驱动程序时)
- imageick 实例(在使用 imageick 驱动程序时)
- Intervention\Image\Image 实例图片
- SplFileInfo 实例,处理laravel框架文件上传 Symfony\Component\HttpFoundation\File\UploadedFile 实例
实例
// 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'));
注意
1、有时make直接传参url(特别注意微信头像)时可能会很慢,可以先下载图片,在make文件路径创建实例,不一定都这样,开发时可测试一下图片处理性能
更多使用方法请参考 Intervention Image 官方文档:http://image.intervention.io/
声明:
本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。