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 相关文章推荐
做个自己站内搜索引擎
Oct 09 PHP
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 PHP
php下关于Cannot use a scalar value as an array的解决办法
Aug 08 PHP
用穿越火线快速入门php面向对象
Feb 22 PHP
解析:使用php mongodb扩展时 需要注意的事项
Jun 18 PHP
PHP内核探索:变量存储与类型使用说明
Jan 30 PHP
PHP中的output_buffering详细介绍
Sep 27 PHP
PHP实现json_decode不转义中文的方法
May 20 PHP
php读取本地json文件的实例
Mar 07 PHP
PHP iconv()函数字符编码转换的问题讲解
Mar 22 PHP
PHP二维数组分页2种实现方法解析
Jul 09 PHP
PHP使用Http Post请求发送Json对象数据代码解析
Jul 16 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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
php Smarty 字符比较代码
2011/02/27 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
你必须知道的Javascript知识点之"单线程事件驱动"的使用
2013/04/23 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
在Python下尝试多线程编程
2015/04/28 Python
Python多层装饰器用法实例分析
2018/02/09 Python
对Python中的@classmethod用法详解
2018/04/21 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
HTML5调用手机摄像头拍照的实现思路及代码
2014/06/15 HTML / CSS
中国医药集团国药在线:国药网
2017/02/06 全球购物
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
公司接待方案
2014/03/08 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python
图文详解Nginx版本平滑升级方案
2021/09/15 Servers
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android