Yii2第三方类库插件Imagine的安装和使用


Posted in PHP onJuly 06, 2017

Imagine

Imagine 是一个面向对象的 PHP 类库用于图片操作。这个类库能够处理一些常用到的操作如:调整大小、裁剪、应用过滤器等。

其Color类库可用于对任意对定的颜色生成RGB值。并且还提供一些方法来绘制图形如:圆弧,椭圆,线,片等。

此外,还可以利用一个灵活的字体类来加载任意字体文件,然后将文字插入到图片中。

Imagine 是一个会经常更新的类库,将来还会实现:图表生成、圆角过滤器等功能。

Yii2 安装 Imagine

Imagine 的手动下载和安装这里就不做介绍了,可自行百度。这里介绍 Yii2 的 Composer 方式来安装 Imageine。

方法一

php composer.phar require --prefer-dist yiisoft/yii2-imagine

方法二

在项目 composer.json 文件内的 require 字段里添加如下代码:

"yiisoft/yii2-imagine": "~2.1.0"

然后再项目根目录下执行命令(cmd):

composer require yiisoft/yii2-imagine

Yii2 使用 Imagine

use yii\imagine\Image;

$srcImg = Yii::getAlias('@webroot/test.jpg');
$aimImg = Yii::getAlias('@webroot/testdeal.jpg');
$srcTTF = Yii::getAlias('@webroot/img/symbol.ttf');

// 缩略
// 参数 inset 表示定框缩略
// 图片完整缩略在 200x100 的框内
// 备注:定框的宽度或高度必须有一个小于图片的实际尺寸,否则直接返回源图尺寸
Image::thumbnail($srcImg, 200, 100, 'inset')->save($aimImg, ['quality'=>100]);

// 缩略
// 参数 outbound 表示单尺寸优先缩略并居中截取
// 该参数为函数的默认值,它会为您尽可能多的截取图片但又不会超出图片范围
// 例:源图 500x200,那么按照高度 100 缩略(变为250x100),然后再居中截取 200x100
// 例:源图 400x350,那么按照宽度 200 缩率(变为200x175),然后再居中截取 200x100
// 例:源图 100x80,那么不缩率不截取,直接返回源图 100x80
Image::thumbnail($srcImg, 200, 100, 'outbound')->save($aimImg, ['quality'=>100]);

// 缩略
// 按宽度 200 缩略,高度自适应
Image::thumbnail($srcImg, 200, null)->save($aimImg, ['quality'=>100]);

// 缩略
// 按高度 100 缩略,宽度自适应
Image::thumbnail($srcImg, null, 100)->save($aimImg, ['quality'=>100]);

// 剪切
// 参数:源图、宽度、高度、起始点
// 将源文件 $srcImg 保存到 $aimImg
Image::crop($srcImg, 400, 200, [100,100])->save($aimImg);

// 旋转
// 未研究
Image::frame('@webroot/img/test-image.jpg', 5, '666', 0)->rotate(-8)->save(Yii::getAlias('@webroot/img/thumb-test-frame.jpg'), ['quality' => 100]);

// 水印
// 未研究
Image::watermark('@webroot/img/test-image.jpg', '@webroot/img/watermark.jpg', [10,10])->save(Yii::getAlias('@webroot/img/thumb-test-watermark.jpg'), ['quality' => 100]);

// 文字水印
// 参数:源图、文字、字体、起始点、字体配置
Image::text($srcImg, 'hello world', $srcTTF, [100,100] ,['color'=>'000000','size'=>50])->save($aimImg, ['quality'=>100]);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP+javascript模拟Matrix画面
Oct 09 PHP
php zlib压缩和解压缩swf文件的代码
Dec 30 PHP
用php来改写404错误页让你的页面更友好
Jan 24 PHP
php中并发读写文件冲突的解决方案
Oct 25 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
May 04 PHP
PHP中的多行字符串传递给JavaScript的两种方法
Jun 19 PHP
php获取根域名方法汇总
Oct 28 PHP
使用php+swoole对client数据实时更新(一)
Jan 07 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
Mar 29 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
Sep 27 PHP
yii2 上传图片的示例代码
Nov 02 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 PHP
一个实用的php验证码类
Jul 06 #PHP
万能的php分页类
Jul 06 #PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 #PHP
php文件上传类的分享
Jul 06 #PHP
PHP图片水印类的封装
Jul 06 #PHP
php生出随机字符串
Jul 06 #PHP
PHP实现的分页类定义与用法示例
Jul 05 #PHP
You might like
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
Python3简单实现串口通信的方法
2019/06/12 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
火车的故事教学反思
2014/02/11 职场文书
企业公益活动策划方案
2014/08/24 职场文书
决心书格式及范文
2019/06/24 职场文书
四年级作文之植物
2019/09/20 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers