yii2-imagine的拓展和imagine插件是分开的 , yii2只提供了拓展 , 刚好用到yii2 , 搞了一天终于解决了 , 分享一下心得给大家,希望大家少走点弯路。
1、 首先从官网下载yii2-imagine的拓展
下载地址:https://github.com/yiisoft/yii2-imagine
下载包名称:yii2-imagine-master
2、 然后再下载imagine的插件包
下载地址:https://github.com/avalanche123/Imagine/releases
下载包名称:Imagine-0.5.0.zip
在阅读了yii2-imagine的代码后,我发觉v0.5.0的版本完全兼容。所以大家下载v0.5.0的版本就可以了
3、 在项目yii2的vendor\yiisoft\yii2目录下创建一个imagine目录
a) 解压yii2-imagine-master , 将BaseImage.php还有Image.php复制到imagine目录中
b) 解压Imagine-0.5.0.zip ,将Imagine-0.5.0\lib\Imagine目录 , 复制到imagine目录下
c) 将vendor\yiisoft\yii2\imagine下的所有页面,含有
namespace Imagine\
替换成
namespace yii\imagine\Imagine\
含有
use Imagine\
替换成
use yii\imagine\Imagine\
d) 修改vendor\yiisoft\yii2\imagine\BaseImage.php
89行:return new \Imagine\Gmagick\Imagine();
改成 return new Imagine\Gmagick\Imagine();
94行:return new \Imagine\Imagick\Imagine();
改成 return new Imagine\Imagick\Imagine();
99行:return new \Imagine\Gd\Imagine();
改成 return new Imagine\Gd\Imagine();
e) 修改vendor\yiisoft\yii2\imagine\Imagine\Image\Box.php
在头部追加
use yii\imagine\Imagine\Image\BoxInterface;
4、 大功告成,测试
<?php
use yii\imagine\Image;
//图片路径请根据自己的项目的位置调整
Image::frame('path/to/image.jpg', 5, '666', 0)
->rotate(-8)
->save('path/to/destination/image.jpg', ['quality' => 50]);
?>
分享到:QQ空间新浪微博腾讯微博微信
# Yii2 第三方类库安装和使用:Imagine
▪ 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]);
文字水印的字体文件
分享下:
$font = '@static/common/font/STXINGKA.TTF';//华文行楷
$srcTTF = Yii::getAlias($font);
$filename = STATICURL . '/site/images/name_back.jpg';
$text = '哈哈哈 hello word';
Image::text($filename, $text, $srcTTF, [50, 500], ['color' => 'fff', 'size' => 35])->show('jpg');
- Yii2使用Url组件
- Yii2的Html,Request组件详解
- YII2.0框架, 多图片上传功能
- yii2-imagine配置
- 有洁癖的禁止默认YII自带垃圾代码(个人认为)、JS、CSS(新手教程)
- Yii2 API接口输出统一Json和jsonp格式方法
- MySql 创建表的一些语句释义
- Yii2联合查询(配合GridView)
- Yii 通用系统字典
- ArrayHelper的多维数组排序函数multisort,强大无比。
- 路由规则,在Url中替换使用'/'以外的符号连接
- 从excel文件中读取表格内容,并批量写入数据库
- yii2注册时验证用户名、邮箱等唯一性
- Yii2最全的实战教程
- Composer安装yii2-imagine 压缩,剪切,旋转,水印
- LinkPager增加总页数 和总记录数
- Yii2 获取模块名控制器名方法名
- Yii2使用yii2-adminlte+yii2-admin左侧菜单子路径不高亮问题又解
- 前端CSS框架
- Yii2 之 frontend 子模块实践之一:添加前后台子模块
- Yii2 之 frontend 子模块实践之二:构建子模块的独立配置
- Yii2 之 frontend 子模块实践之三:布局和语言配置
- 完美解决ajax验证码不刷新问题,让验证码更加美观,不修改任何源代码
- yii2.0 表单小部件常用的默认选中
- Yii2 controller 传值给layout
- yii2 dropDownList 二级和三级 联动写法
- 微信扫码登录 新窗口二维码 扫完关闭二维码页面 进入登录页面
- yii2 实现 "上一篇,下一篇" 功能
- Yii 行为简单应用
- SQL语句