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


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 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
Nov 26 Javascript
javascript自执行函数之伪命名空间封装法
Dec 25 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
Oct 11 Javascript
jquery ajax方式直接提交整个表单核心代码
Aug 15 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
Mar 19 Javascript
jQuery中removeAttr()方法用法实例
Jan 05 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
Jun 25 Javascript
全面解析Angular中$Apply()及$Digest()的区别
Aug 04 Javascript
Angular ElementRef简介及其使用
Oct 01 Javascript
微信小程序传值以及获取值方法的详解
Apr 29 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
Jun 05 Javascript
vue同个按钮控制展开和折叠同个事件操作
Jul 29 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网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
php生成图片缩略图的方法
2015/04/07 PHP
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
Vue绑定内联样式问题
2018/10/17 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
Python获取远程文件大小的函数代码分享
2014/05/13 Python
python去除字符串中的换行符
2017/10/11 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
GC是什么?为什么要有GC?
2013/12/08 面试题
制药工程专业应届生求职信
2013/09/24 职场文书
领导检查欢迎词
2014/01/14 职场文书
幼儿园区域活动总结
2014/05/08 职场文书