Laravel 5.*使用Intervention/image轻松实现图片压缩/剪裁/添加水印功能
Song •
11985 次浏览 •
1个评论 •
2017年07月19日
本本主要讲解,使用Laravel 5.*+Intervention Image 轻松实现对图片的上传,创建,修改,和压缩,旋转,缓存以及添加图片水印等处理
1、使用Composer安装依赖
composer require intervention/image
2、配置拓展
在config/app.php中注册服务提供者到providers数组:
Intervention\Image\ImageServiceProvider::class
同样在config/app.php中注册门面到aliases数组:
Image => Intervention\Image\Facades\Image::class
执行如下代码发布资源
php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"
将包的配置文件config/image.php
发布到应用根目录的config目录下以便可以访问和配置。
3、需求条件
默认情况下,Intervention Image
使用PHP的GD
库扩展处理所有图片,如果你想要切换到Imagick
,可以在config/image.php
中修改,使用先确定本地已经安装好 GD
或 Imagick
.
4.基础用法
1、读取图片
Route::get(/, function(){
$img = Image::make(foo/bar/baz.jpg);
return $img->response(jpg);
});
2、绘制图片
$img = Image::canvas(800, 600, #ccc);
3、编辑图片
$img = Image::make(foo.jpg)->resize(320, 240)->insert(watermark.png);
4、上传图片
// resizing an uploaded file
Image::make(Input::file(photo))->resize(300, 200)->save(foo.jpg);
5、旋转图片
$img->rotate(-45);
6、压缩图片
$img = Image::make(foo.jpg)->resize(500, 400);
// 只改变宽度,高度不变,注意:会变形
$img->resize(300, null);
// 宽度为300,高度自动调整,不会变形
$img->resize(300, null, function ($constraint) {
$constraint->aspectRatio();
});
7、缓存
$img = Image::cache(function($image) {
$image->make(public/foo.jpg)->resize(300, 200)->greyscale();
});
8、添加水印
// 修改指定图片的大小
$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);
9.汇集所有一行解决所有问题
//上传并且压缩宽度为800高度自己适应,插入水印并且随机命名保存
$img = Image::make(Input::file(photo))->resize(800, null, function ($constraint) {$constraint->aspectRatio();})->insert(img/logo.png, bottom-right, 15, 10)->save(/uploads/.date("YmdHis",time()).rand(1000,9999).".png");
10、添加文字/文字水印
使用text
方法可以添加文字水印,他还有很多熟悉你可以从官网查看,Demo:
$img->text(The quick brown fox jumps over the lazy dog., 120, 100);
如果要查看效果就return $img->response(png);
一下,修改后要保存需要单独$img->save(1.png);
好了,讲到这里,还有9几种方法,大家去官方文档看一下吧!
获取Intervention处理后的图片上传到OSS等云存储
由于执行我们的图片处理只有response
和response
,所以我们操作以前必须要保存一下,然后通过basePath()
拿到保存后的路径上传:
$file = $request->file(fileUp);
$img = Image::make($file->getRealPath())->insert(img/logo.png, top-left, 15, 15)->save(images/new_avatar.jpg);
# 保存后的路径,用于上传删除
$img->basePath()
更多相关好文
-
laravel中distinct()的使用方法与去重 2017-09-11
-
Laravel将view缓存为静态html,laravel页面静态缓存 2021-10-09
-
[ laravel爬虫实战--基础篇 ] guzzle描述与安装 2017-11-01
-
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 2017-07-18
-
mysql如何给运营人员添加只有查询权限的账号 2024-12-02
热门文章
-
mysql如何给运营人员添加只有查询权限的账号 2024-12-02
-
Mac 安装mysql并且配置密码 2024-11-20
-
阿里云不同账号(跨账号)ECS服务器同地域如何实现免费内网互通? 2024-11-12
-
electron安装使用better-sqlite3并解决NODE_MODULE_VERSION xxx. This version of Node.js requires 2024-11-06
-
Zerotier+Moon+Nginx实现内网穿透搭建网站 2024-08-23
Laravel模型更新全表如何实现?