微信小程序之批量上传并压缩图片的实例代码


Posted in Javascript onJuly 05, 2018

具体内容如下所示:

首先,要在.wxml文件里面创建一个canvas,作用是承载压缩的图片,以供上传的时候获取

这个canvas不能隐藏,否则没效果,可以将其移至屏幕外。

<canvas canvas-id='attendCanvasId' class='myCanvas'></canvas>

然后呢,就是.js文件里面的方法了

// 点击加_压缩
 takePhoto: function () {
  var that = this;
  let imgViewList = that.data.imgViewList; //这个是用来承载页面循环展示图片的
   //拍照、从相册选择上传
   wx.chooseImage({
    count: 4,  //这个是上传的最大数量,默认为9
    sizeType: ['compressed'],  //这个可以理解为上传的图片质量类型(官方给的),虽然没什么卵用,要不然还要我们自己写压缩做什么
    sourceType: ['album', 'camera'],  //这个是图片来源,相册或者相机
    success: function (res) {
     var tempFilePaths = res.tempFilePaths  //这个是选择后返回的图片列表
     that.getCanvasImg(0, 0, tempFilePaths);  //进行压缩
    } 
   });
 },
 //压缩并获取图片,这里用了递归的方法来解决canvas的draw方法延时的问题
 getCanvasImg: function (index,failNum, tempFilePaths){
  var that = this;
  if (index < tempFilePaths.length){
   const ctx = wx.createCanvasContext('attendCanvasId');
   ctx.drawImage(tempFilePaths[index], 0, 0, 300, 150);
   ctx.draw(true, function () {
    index = index + 1;//上传成功的数量,上传成功则加1
    wx.canvasToTempFilePath({
     canvasId: 'attendCanvasId',
     success: function success(res) {
      that.uploadCanvasImg(res.tempFilePath);
      that.getCanvasImg(index,failNum,tempFilePaths);
     }, fail: function (e) {
      failNum += 1;//失败数量,可以用来提示用户
      that.getCanvasImg(inedx,failNum,tempFilePaths);
     }
    });
   });
  }
 },
 //上传图片
 uploadCanvasImg: function (canvasImg){
  var that = this;
  let imgViewList = that.data.imgViewList;
  var tempImg = canvasImg;
  wx.uploadFile({
   url: app.d.fileServer,//文件服务器的地址
   filePath: tempImg,
   formData: {
    paramPath: "gift"
   },
   name: 'file',
   success: function (res) {
    var json2map = JSON.parse(res.data);
    imgViewList.push(app.d.imageUrlFix + json2map[0].fileUrl);
    that.setData({
     imgViewList: imgViewList,
    })
   }
  })
 },

总结

以上所述是小编给大家介绍的微信小程序之批量上传并压缩图片的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JAVASCRIPT HashTable
Jan 22 Javascript
JS 跳转页面延迟2种方法
Mar 29 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
Sep 10 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
Feb 11 Javascript
使用jQuery时Form表单元素ID和name命名大忌
Mar 06 Javascript
超赞的动手创建JavaScript框架的详细教程
Jun 30 Javascript
实现音乐播放器的代码(html5+css3+jquery)
Aug 04 Javascript
javascript动态获取登录时间和在线时长
Feb 25 Javascript
jQuery前端开发35个小技巧
May 24 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
Aug 11 Javascript
SVG描边动画
Feb 23 Javascript
vue-router 前端路由之路由传值的方式详解
Apr 30 Javascript
JavaScript控制浏览器全屏显示简单示例
Jul 05 #Javascript
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 #jQuery
JavaScript递归函数解“汉诺塔”算法代码解析
Jul 05 #Javascript
微信小程序开发之改变data中数组或对象的某一属性值
Jul 05 #Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
Jul 05 #Javascript
微信小程序实现左右联动的实战记录
Jul 05 #Javascript
vue实现自定义多选与单选的答题功能
Jul 05 #Javascript
You might like
php学习之 认清变量的作用范围
2010/01/26 PHP
PHP的基本常识小结
2013/07/05 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
python中join()方法介绍
2018/10/11 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
Python修改DBF文件指定列
2020/12/19 Python
医科学校毕业生自荐信
2013/11/09 职场文书
元旦晚会邀请函
2014/01/27 职场文书
表彰先进的通报
2014/01/31 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
人大调研汇报材料
2014/08/14 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL