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


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与其他JavaScript库并存避免冲突的方法
Dec 23 Javascript
深入理解javascript作用域和闭包
Sep 23 Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 Javascript
在html中引入外部js文件,并调用带参函数的方法
Oct 31 Javascript
jQuery内存泄露解决办法
Dec 13 Javascript
jQuery源码分析之sizzle选择器详解
Feb 13 Javascript
canvas实现环形进度条效果
Mar 23 Javascript
详解Vue单元测试Karma+Mocha学习笔记
Jan 31 Javascript
小程序实现展开/收起的效果示例
Sep 22 Javascript
vue头部导航动态点击处理方法
Nov 02 Javascript
小程序点击图片实现自动播放视频
May 29 Javascript
JS浏览器BOM常见操作实例详解
Apr 27 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
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
PHP实现获取url地址中顶级域名的方法示例
2019/06/05 PHP
JQuery切换显示的效果实例代码
2013/02/27 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
2016/04/13 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
python os.path模块常用方法实例详解
2018/09/16 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
师范生实习自我鉴定
2013/11/01 职场文书
财务出纳员岗位职责
2013/11/26 职场文书
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
党组织公开承诺书
2014/03/29 职场文书
工程项目经理任命书
2014/06/05 职场文书
白鹤梁导游词
2015/02/06 职场文书
岗位聘任报告
2015/03/02 职场文书
工程款催款函
2015/06/24 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android