▪ 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]);

Yii2 第三方类库安装和使用:Imagine相关推荐

  1. php discuz 顶,Discuz X3.1 使用 composer安装第三方类库(php libraries)

    Discuz X3.1 是一个成熟的基于php开发的社区系统(广义上来讲是一个建站系统),自从被企鹅收购后悄无声息的被遗弃了,伤感啊.如今要在Discuz上加什么功能,改bug什么的只能依靠自力更生了 ...

  2. 在typescript中导入第三方类库import报错

    问题 最近开始折腾typescript,在使用第三方类库,比如最常见的lodash,采用常规方法导入 import * as _ from 'lodash' vscode中报错提示lodash不是mo ...

  3. Laravel 引入自定义类库或第三方类库

    https://www.cnblogs.com/mouseleo/p/9075187.html 强烈建议引入的类 都是含有命名空间的,这样使用起来就不会出现重名的情况.!!当然,没有命名空间也可以使用 ...

  4. Cocoapods 第三方类库管理工具

    参考:http://www.it165.net/pro/html/201410/24804.html Cocoapods意义体现在两个方面. l   在引入第三方库时它可以自动为我们完成各种各样的配置 ...

  5. CocoaPods管理iOS的第三方类库

    2019独角兽企业重金招聘Python工程师标准>>> 使用CocoaPods管理iOS的第三方类库 OCT 15TH, 2012 iOS第三方类库的管理是一个很麻烦的事,项目信赖的 ...

  6. IOS启程01-配制CocoaPods来管理第三方类库

    IOS启程 - 配制CocoaPods来管理第三方类库 Mac OSX 10.11 之后 1 CocoaPods CocoaPods应该是iOS最常用最有名的类库管理工具了,也就是说,在IOS开发过程 ...

  7. webpack配置:打包第三方类库、第三方类库抽离、watch自动打包、集中拷贝静态资源...

    一.打包第三方类库 下面说2种方法: 第一种: 1.引入jQuery,首先安装: npm install --save-dev jquery 2.安装好后,在index.js中引入,用jquery语法 ...

  8. pycharm如何设置python版本、设置国内pip镜像、添加第三方类库

    直接上图(mac环境): 一.设置项目的python版本 File->Default Settings ... 在弹出的界面上(参考下图),左上角的下拉框里,选择python解释器的版本即可(建 ...

  9. ios中导入第三方类库

    CocoaPods是什么? 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而 ...

  10. Pycharm无法直接在Setting中添加第三方类库问题(已解决)

    前言:不知道小伙伴有没有碰到这样的情况:pycharm-setting直接安装第三方类库失败,只能通过手动命令行Terminal进行手动添加pip install --index-url https: ...

最新文章

  1. 腾讯关系型数据库达成“双百”里程碑——6大企业级MySQL特性全面解析
  2. CSS面试总结(大致)
  3. STM32H743-梳理ADC模数转换器在CubeMX上的配置
  4. http://ftp.gnu.org/gnu/ http://ftp.gnu.org/gnu/libc/
  5. Tomcat整体介绍
  6. [转载] 华中科技大学期刊分类办法
  7. TCP/IP详解 笔记九
  8. iPhone 12发布当天,罗永浩开“旧机发布会”:香得不行!
  9. 创建队列 c语言_在C中创建队列
  10. tensor.detach() 和 tensor.data 的区别
  11. 深入浅出的etl作业调度工具taskctl
  12. quartz定时任务xml配置
  13. 测度论与概率论基础(程士宏)学习笔记(三)
  14. 在VMware16虚拟机安装Ubuntu详细教程
  15. 小刘的http状态码整理
  16. LINK : fatal error LNK1181: 无法打开输入文件“xx.lib”(SpaHBridge.lib)
  17. 我不理解表现与数据分离。。。
  18. R语言学习-----数据的载入
  19. 基频和倍频的概念_一倍频分析
  20. 10个企业网络安全建议,解决99%的网络安全问题

热门文章

  1. 这是转载的孔雀东南飞的文章
  2. zt 李鸿章听过《彩云追月》?
  3. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day29】
  4. edp协议 netty_大牛轻松带你玩转Arduino智能硬件:EDP协议连接onenet平台
  5. Android L 的手机,安卓新系统Android L上手评测:改变很大
  6. SAP采购中若干价格表的梳理
  7. 华为交换机不同VLAN间通信的两种主流解决方案,一分钟快速掌握
  8. OSPF路由器类型 ABR与ASBR路由聚合区别
  9. 个人github地址 https://github.com/Gerry1218
  10. BZOJ3772:精神污染