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


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 相关文章推荐
utf-8编码引起js输出中文乱码的解决办法
Jun 23 Javascript
JS中判断null、undefined与NaN的方法
Mar 26 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
May 24 Javascript
JavaScript的instanceof运算符学习教程
Jun 08 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
Aug 31 Javascript
JavaScript仿微博输入框效果(案例分析)
Dec 06 Javascript
基于Cookie常用操作以及属性介绍
Sep 07 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
Jul 31 Javascript
AngularJS实现的自定义过滤器简单示例
Feb 02 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
Apr 28 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
Jul 14 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
Jul 26 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实现Ftp用户的在线管理的代码
2007/03/06 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
document.compatMode介绍
2009/05/21 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
C#实现将一个字符转换为整数
2017/12/12 Javascript
12条写出高质量JS代码的方法
2018/01/07 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
Python中暂存上传图片的方法
2015/02/18 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
Python File readlines() 使用方法
2018/03/19 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
python删除字符串中指定字符的方法
2018/08/13 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
Django异步任务线程池实现原理
2019/12/17 Python
硕士研究生自我鉴定
2013/11/08 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
小班上学期个人总结
2015/02/12 职场文书
花木兰观后感
2015/06/10 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书