更新记录

1.1.5(2023-06-18) 下载此版本

1、修复图片获取异常处理 2、组件重复ID问题处理,满足二次封装要求

1.1.4(2023-05-17) 下载此版本

  1. 【删除】batchCompress 方法

  2. 【修改】部分平台会提示 uni.upx2px 的错误

1.1.3(2020-10-31) 下载此版本

1、【优化】插件代码;

2、【完善】示例功能增加图片点击预览;

查看更多

平台兼容性

uni-app

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - - -

其他

多语言 暗黑模式 宽屏模式
× ×

图片压缩

关于App平台的图片压缩问题,uniapp已经有相关的API,具体效果不清楚(没用过),与本插件比较少了H5平台的支持。文档地址:https://uniapp.dcloud.net.cn/api/media/image?id=compressimage

script 中引用组件

复制代码import helangCompress from '../../components/helang-compress/helang-compress';

export default {
    components: {
        helangCompress
    }
}

template 中添加组件

复制代码<helang-compress ref="helangCompress"></helang-compress>

方法说明:

方法名 可传参数 必填 说明
compress() Object 【单张压缩】设置压缩的图片及压缩尺寸和压缩质量,参数详情请阅读下方 compress()方法参数

compress() 方法参数:

参数名 类型 必填 默认值 说明
src String / Array - 待压缩的图片地址,由相册选择或拍照获取。注意:若src的值为String压缩成功后则返回String,若为Array,压缩成功后则返回Array
maxSize Number 1080 压缩后的最大尺寸
fileType String 'png' 压缩后的文件类型,可选值 jpg、png
quality Number 0.9 压缩后的质量(仅jpg类型有效,原因可自行阅读官方canvas文档),可选值 0 ~ 1,值越大越清晰(图片也越大)
minSize Number 640 最小压缩尺寸,图片尺寸小于该时值不压缩,非H5平台有效。若想忽略该设置可以将该值设置为一个极小的值,比如一个负数(不能是0)

为使插件在 H5 平台统一返回 base64 数据,则故意取消 H5 平台对 minSize 的设置。H5平台压缩后的图片路径是 base64 格式,有跨平台需求须注意

progress 方法回调对象属性详细说明:

参数名 类型 说明
done Number 已完成压缩的数量
fail Number 压缩失败的数量
count Number 总共需要压缩的数量

源码示例:

复制代码// 示例代码较多,请大家下载 【示例项目ZIP】进行阅读

// 单张压缩
this.$refs.helangCompress.compress({
    src:this.paths[0],
    maxSize:800,
    fileType:'jpg',
    quality:0.85,
    minSize:640 //最小压缩尺寸,图片尺寸小于该时值不压缩,非H5平台有效。若需要忽略该设置,可设置为一个极小的值,比如负数。
}).then((res)=>{
    // 压缩成功回调
}).catch((err)=>{
    // 压缩失败回调
})

// 批量压缩
this.$refs.helangCompress.compress({
    src:this.paths,
    maxSize:800,
    fileType:'jpg',
    quality:0.85,
    progress:(res)=>{
        console.log('压缩进度');
        console.log(res);
    }
}).then((res)=>{
    // 压缩成功回调
}).catch((err)=>{
    // 压缩成功回调
})

友情提示:

  1. 当前项目源码使用了 ES6 和 scss 请添加运行依赖
  2. [插件ZIP]只包含模板文件和数据文件,不包含项目运行依赖(如 pages.json)
  3. [示例项目ZIP]是完整的项目文件,可下载后导入 HBuilderX 中直接运行体验
  4. 文件下载在当前页面的上部靠右位置,有 [下载插件ZIP] [下载示例项目ZIP] 按钮,点击即可下载

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议
mjn***@163.com

2024-11-12

145***@qq.com

2024-07-08

666666666666666666

bos***@qq.com

2024-05-10

uniapp 小程序SDK【wgt】可用 感谢!

mzs***@163.com

2024-04-22

143***@qq.com

2024-04-18

zhe***@yftech-dl.com

2024-04-17

求解,环境为uni-app环境,在压缩苹果手机中的图片时,压缩后的base64是白图,什么都没有了

黄河爱浪 2024-04-17

maxSize 设置成 1024及以下试试,iOS这个沙雕不让canvas设置的过大

我命由我不由天

2024-04-14

128***@qq.com

2024-02-22

支付宝小程序中,uni.canvasToTempFilePath函数不执行。也就是说无法压缩

黄河爱浪 2024-04-17

等支付宝修复吧,小程序平台 canvas 天天出BUG

190***@qq.com

2024-04-26

iphone13 pro 第一张图片:选择相册图片 第二张图片:相机拍照 当相机拍照返回压缩图片界面时会出现卡机现象:

手机问题,让测试重启手机就可以了

fjk***@126.com

2023-12-25

demo在支付宝小程序中不支持呢,一直显示压缩中

2023-08-09

7月份开始,项目突然出现了第一次压缩后一半空白的现象,从第二次开始图片压缩正常。有的有问题(华为mate40pro,荣耀9x,vivo也出现过),有的没问题。个人感觉跟手机版本关系更大些。只是提一下,大佬有时间了可以测试测试