Imagine
Imagine 是一个面向对象的 PHP 类库用于图片操作。这个类库能够处理一些常用到的操作如:调整大小、裁剪、应用过滤器等。
其Color类库可用于对任意对定的颜色生成RGB值。并且还提供一些方法来绘制图形如:圆弧,椭圆,线,片等。
此外,还可以利用一个灵活的字体类来加载任意字体文件,然后将文字插入到图片中。
Imagine 是一个会经常更新的类库,将来还会实现:图表生成、圆角过滤器等功能。
Yii2 安装 Imagine
Imagine 的手动下载和安装这里就不做介绍了,可自行百度。这里介绍 Yii2 的 Composer 方式来安装 Imageine。
方法一
1
|
php composer.phar require --prefer-dist yiisoft/yii2-imagine |
方法二
在项目 composer.json 文件内的 require 字段里添加如下代码:
1
|
"yiisoft/yii2-imagine" : "~2.1.0" |
然后再项目根目录下执行命令(cmd):
1
|
composer require yiisoft/yii2-imagine |
Yii2 使用 Imagine
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
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]); |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.yiichina.com/tutorial/1331