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


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 相关文章推荐
用JS剩余字数计算的代码
Jul 03 Javascript
关于Aptana Studio生成自动备份文件的解决办法
Dec 23 Javascript
Exjs 入门篇
Apr 07 Javascript
浅说js变量
May 25 Javascript
封装了jQuery的Ajax请求全局配置
Feb 05 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
Oct 17 Javascript
微信小程序 底部导航栏目开发资料
Dec 05 Javascript
谈谈JavaScript数组常用方法总结
Jan 24 Javascript
利用node.js实现反向代理的方法详解
Jul 24 Javascript
将Vue组件库更换为按需加载的方法步骤
May 06 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
Jul 15 Javascript
js利用iframe实现选项卡效果
Aug 09 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
一个用于MySQL的PHP XML类
2006/10/09 PHP
php面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
php邮件发送的两种方式
2020/04/28 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
jQuery功能函数详解
2015/02/01 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
Python抓取电影天堂电影信息的代码
2016/04/07 Python
Python 通过URL打开图片实例详解
2017/06/01 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
缴纳养老保险的证明
2014/01/10 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
python如何进行基准测试
2021/04/26 Python
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
Python基础之元编程知识总结
2021/05/23 Python
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android