Releases: moxuandi/yii2-helpers
Releases · moxuandi/yii2-helpers
ArrayHelper:itemsMerge()函数添加保留部分数组键功能
移除文件大小限制
递归数组树状结构时允许忽略空的子集
ArrayHelper::itemsMerge($models, 0, 'id', 'pid', 'children', true);
保存入库允许自定义Model模型
如果要使用文件保存入库功能, 必须将modelClass
设置为类的完全限定名称(eg: common\model\Upload
), 该类必须是yii\db\ActiveRecord
的子类, 且必须包含一些字段(参考@vendor\moxuandi\yii2-helpers\migrations\m190101_010101_upload.php
)
综合修复与完善
1. 合并thumb
, crop
, frame
, watermark
, text
, resize
为一个参数process
, 二维数组, 多个元素时将按顺序依次执行;
'config' => [
'process' => [
// 缩略图
'thumb' => [
'width' => 300,
'height' => 200,
//'mode' => 'outbound', // 'inset'(补白), 'outbound'(裁剪, 默认值)
],
// 裁剪图像
'crop' => [
'width' => 300,
'height' => 200,
//'top' => 0,
//'left' => 0,
],
// 添加边框
'frame' => [
'margin' => 20,
//'color' => '666',
//'alpha' => 100,
],
// 添加图片水印
'watermark' => [
'watermarkImage' => '@web/uploads/watermark.png',
//'top' => 0,
//'left' => 0,
],
// 添加文字水印
'text' => [
'text' => '水印文字',
'fontFile' => '@web/uploads/simhei.ttf', // 字体文件的位置
/*'fontOptions' => [
'size' => 12,
'color' => 'fff',
'angle' => 0,
],*/
//'top' => 0,
//'left' => 0,
],
// 调整图片大小
'resize' => [
'width' => 300,
'height' => 200,
//'keepAspectRatio' => true, // 是否保持图片纵横比
//'allowUpscaling' => false, // 如果原图很小, 图片是否放大
],
],
],
2. 保存文件信息入库
使用迁移命令生成数据表:
yii migrate --migrationPath=@vendor/moxuandi/yii2-helpers/migrations
Uploader上传类用法示例:
$config = [
'maxSize' => 5*1024*1024, // 上传大小限制, 单位B
'saveDatabase' => true, // 文件信息是否保存入库
];
$up = new Uploader('upfile', $config);
echo Json::encode([
'url' => $up->fullName,
'state' => $up->stateInfo
]);
-
getImageInfo()
方法中获取扩展名使用PHP内置函数; -
删除
getThumbName()
方法, 因为仅是字符串替换, 没有比内置函数多什么东西; -
调整图片大小: 当宽度和高度都没有定义时, 使用原图片宽高.
-
使用
$this->fileExt = Helper::getExtension($this->realName);
而不是$this->fileExt = $this->file->extension;
, 因为$this->file->name
的值可能是blob
; -
分片上传时显示分片进度;
-
上传状态信息, 返回状态值而不是具体的状态信息;
-
分片计数从
1
开始; -
重构分片上传机制,改为写追加文件(原方法保存每个分片, 最后读取时会导致内存溢出);
-
修复中断上传时造成文件增大问题;
-
self::
改为$this->
, 方便子类继承扩展. -
private
改为public
.
文件类型允许设置为所有
allowFiles
参数设置为空数组或false
,将不验证文件类型!
添加多种图片处理功能
裁剪图配置:
'crop' => [
'width' => 300, // 裁剪图的宽度
'height' => 200, // 裁剪图的高度
'top' => 200, // 裁剪图顶部的偏移, y轴起点, 默认为`0`
'left' => 200, // 裁剪图左侧的偏移, x轴起点, 默认为`0`
'match' => ['image', 'crop'], // 裁剪图路径的替换规则, 必须是两个元素的数组
],
添加边框的配置:
'frame' => [
'margin' => 20, // 边框的宽度, 默认为`20`
'color' => '666', // 边框的颜色, 十六进制颜色编码, 可以不带`#`, 默认为`666`
'alpha' => 100, // 边框的透明度, 可能仅`png`图片生效, 默认为`100`
'match' => ['image', 'frame'], // 添加边框后保存路径的替换规则, 必须是两个元素的数组
],
添加图片水印的配置:
'watermark' => [
'watermarkImage' => '/uploads/watermark.png', // 水印图片的绝对路径
'top' => 100, // 水印图片的顶部距离原图顶部的偏移, y轴起点, 默认为`0`
'left' => 200, // 水印图片的左侧距离原图左侧的偏移, x轴起点, 默认为`0`
'match' => ['image', 'watermark'], // 添加图片水印后保存路径的替换规则, 必须是两个元素的数组
],
添加文字水印的配置:
'text' => [
'text' => 'TONGMENGCMS', // 水印文字的内容
'fontFile' => '@yii/captcha/SpicyRice.ttf', // 字体文件, 可以是绝对路径或别名
'top' => 100, // 水印文字距离原图顶部的偏移, y轴起点, 默认为`0`
'left' => 200, // 水印文字距离原图左侧的偏移, x轴起点, 默认为`0`
'fontOptions' => [ // 字体属性
'size' => 12, // 字体的大小, 单位像素(`px`), 默认为`12`
'color' => 'fff', // 字体的颜色, 十六进制颜色编码, 可以不带`#`, 默认为`fff`
'angle' => 0, // 写入文本的角度, 默认为`0`
],
'match' => ['image', 'text'], // 添加文字水印后保存路径的替换规则, 必须是两个元素的数组
],
调整图片大小的配置:
'resize' => [
'width' => 300, // 图片调整后的宽度
'height' => 200, // 图片调整后的高度
'keepAspectRatio' => true, // 是否保持图片纵横比, 默认为`true`
'allowUpscaling' => false, // 如果原图很小, 图片是否放大, 默认为`false`
'match' => ['image', 'resize'], // 调整图片大小后保存路径的替换规则, 必须是两个元素的数组
],
重置处理缩略图配置
缩略图配置改为:
$config = [
//'thumb' => false, // 不生成缩略图
'thumb' => [ // 缩略图配置
'width' => 300, // 缩略图宽度
'height' => 200, // 缩略图高度
'mode' => 'outbound', // 生成缩略图的模式, 可用值: 'inset'(补白), 'outbound'(裁剪, 默认值)
'match' => ['image', 'thumb'], // 缩略图路径的替换规则, 必须是两个元素的数组
]
];
添加thumbMatch参数
- 添加
thumbMatch
参数:缩略图路径的替换规则, 必须是两个元素的数组, 默认为: ['image', 'thumb']. 注意, 当两个元素的值相同时, 将不会保存原图, 而仅保留缩略图. - 修改函数名
Helper::getThumb()
为Helper::getThumbName()
基于Yii2.0.16重写扩展
v2.0.0 Update Uploader.php