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


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中的sortable排序之后的保存状态的解决方法
Jan 28 Javascript
Jquery选中或取消radio示例
Sep 29 Javascript
JavaScript中对循环语句的优化技巧深入探讨
Jun 06 Javascript
jQuery插件datepicker 日期连续选择
Jun 12 Javascript
javascript Promise简单学习使用方法小结
May 17 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
Apr 13 Javascript
详解用node编写自己的cli工具
May 23 Javascript
node.js博客项目开发手记
Mar 16 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
May 04 Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 Javascript
vue 根据选择条件显示指定参数的例子
Nov 09 Javascript
JS字符串和数组如何实现相互转化
Jul 02 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应用提速面面观
2006/10/09 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
php 常用的系统函数
2017/02/07 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
Jquery性能优化详解
2014/05/15 Javascript
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
简单学习Python多进程Multiprocessing
2017/08/29 Python
python多进程实现文件下载传输功能
2018/07/28 Python
java判断三位数的实例讲解
2019/06/10 Python
python编写俄罗斯方块
2020/03/13 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
2020/11/12 Python
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
娱乐地球:Entertainment Earth
2020/01/08 全球购物
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
优秀学生党员先进事迹材料
2014/05/29 职场文书
瘦西湖导游词
2015/02/03 职场文书
通知格式
2015/04/27 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
校运会加油稿大全
2015/07/22 职场文书
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技