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


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 相关文章推荐
跟我一起学写jQuery插件开发方法(附完整实例及下载)
Apr 01 Javascript
jquery.tmpl JQuery模板插件
Oct 10 Javascript
点击标签切换和自动切换DIV选项卡
Aug 10 Javascript
JavaScript中的值类型详细介绍
Dec 29 Javascript
js实现鼠标感应图片展示的方法
Feb 27 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
Sep 17 Javascript
js返回顶部实例分享
Dec 21 Javascript
基于 webpack2 实现的多入口项目脚手架详解
Jun 26 Javascript
react native与webview通信的示例代码
Sep 25 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
Jun 05 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
Jun 17 Javascript
Vue 中获取当前时间并实时刷新的实现代码
May 12 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
一个分页的论坛
2006/10/09 PHP
javaScript同意等待代码实现心得
2011/01/01 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
javascript创建createXmlHttpRequest对象示例代码
2014/02/10 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
用Python中的字典来处理索引统计的方法
2015/05/05 Python
Python中的集合类型知识讲解
2015/08/19 Python
Python上传package到Pypi(代码简单)
2016/02/06 Python
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
python psutil监控进程实例
2019/12/17 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
Python爬虫与反爬虫大战
2020/07/30 Python
用Python进行websocket接口测试
2020/10/16 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
大二自我鉴定范文
2013/10/05 职场文书
创意广告词
2014/03/17 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
招标保密承诺书
2015/01/20 职场文书
党员自我评价2015
2015/03/03 职场文书
2015年检验科工作总结
2015/04/27 职场文书
Python中的pprint模块
2021/11/27 Python
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python