小程序上传图片需要进行压缩,可以使用wx.getFileSystemManager()方法将图片转换成base64格式,再使用canvas将图片压缩成指定大小。


//选择图片wx.chooseImage({count:  1,  //最多选择1张图片success:  function(res)  {var  tempFilePaths  =  res.tempFilePaths;  //获取图片本地路径//将图片转换成base64格式wx.getFileSystemManager().readFile({filePath:  tempFilePaths[0],encoding:  'base64',success:  function(data)  {//创建canvas进行压缩var  imgData  =  'data:image/png;base64,'  +  data.data;var  image  =  new  Image();image.src  =  imgData;image.onload  =  function()  {//压缩图片,并绘制到canvas上var  canvas  =  document.createElement('canvas');var  context  =  canvas.getContext('2d');var  originWidth  =  this.width;var  originHeight  =  this.height;var  maxWidth  =  1280,  //设置最大的宽度maxHeight  =  1280,  //设置最大的高度targetWidth  =  originWidth,targetHeight  =  originHeight;if  (originWidth  >  maxWidth  ||  originHeight  >  maxHeight)  {if  (originWidth  /  originHeight  >  maxWidth  /  maxHeight)  {targetWidth  =  maxWidth;targetHeight  =  Math.round(maxWidth  *  (originHeight  /  originWidth));}  else  {targetHeight  =  maxHeight;targetWidth  =  Math.round(maxHeight  *  (originWidth  /  originHeight));}}canvas.width  =  targetWidth;canvas.height  =  targetHeight;context.clearRect(0,  0,  targetWidth,  targetHeight);context.drawImage(image,  0,  0,  targetWidth,  targetHeight);//将canvas转换成图片base64格式var  imageData  =  canvas.toDataURL('image/png');var  base64Data  =  imageData.replace(/^data:image\/\w+;base64,/,  "");//调用接口上传图片wx.uploadFile({url:  '接口地址',filePath:  tempFilePaths[0],name:  'file',formData:  {'content':  base64Data},success:  function(res)  {//上传成功},fail:  function()  {//上传失败}})}}})}})

首先使用wx.chooseImage()方法选择了一张图片,然后使用wx.getFileSystemManager()方法将图片转换成base64格式。接着使用canvas进行压缩,并将canvas转换成图片base64格式,最后调用接口上传图片。在压缩过程中,设置了最大宽度和高度为1280,可以根据实际需求进行调整

微信小程序上传图片压缩方案相关推荐

  1. 微信小程序上传图片到服务器总是失败_微信小程序上传图片过大导致请求失败的解决方法...

    很多时候我们都会碰到小程序上传图片时因为图片过大而导致请求失败,同时出现各种各样的问题,那么今天来给大家写一个微信小程序上传图片过大导致请求失败的完美解决办法. 以云开发小程序图片检测为例,如果图片过 ...

  2. 微信小程序上传图片至服务器Springboot接收格式的问题

    微信小程序上传图片至服务器Springboot 需求:通过微信小程序上传图片到服务器,保存至服务器. 实现 Wxml <button bindtap="choose"> ...

  3. 微信小程序--上传图片加水印

    微信小程序–上传图片加水印 wxml <canvas class='canvas' canvas-id="firstCanvas"></canvas> cs ...

  4. 微信小程序上传图片写法

    微信小程序上传图片 小程序上传图片需要用到小程序API中的wx.uploadFile()方法.以下是一个基本的示例代码: wx.chooseImage({count: 1,sizeType: ['or ...

  5. 微信小程序的推广方案有哪些

    微信小程序的推广方案有哪些 微信小程序对于我们来说并不陌生,很多的企业或者商家品牌的微信活动都会用到它,而且小程序也是微信营销的渠道之一.想要自己的小程序被更多用户关注,就要把自己的小程序推广,为此微 ...

  6. 微信小程序上传图片 预览 删除

    微信小程序上传图片 预览 删除 ①.wxml<view class='footerEditOne'><view wx:for="{{src}}" wx:key=' ...

  7. 微信小程序性能优化方案

    文章目录 微信小程序性能优化方案 提高加载性能 小程序代码包准备(下载代码包) 开发者代码注入 页面渲染优化 提升渲染性能 setData工作原理 优化方法 微信小程序性能优化方案 微信小程序如果想要 ...

  8. 微信小程序-------全局通信方案mobx

    微信小程序-------全局通信方案mobx 微信小程序本身并没有提供类似于vue中的vuex或者React里的Redux这样的全局通信方案,只在组件中有behaviors这样的属性共享机制,用起来也 ...

  9. 微信小程序 api 缓存方案

    微信小程序 api 缓存方案 背景 前言 缓存方案(更新策略) 缓存那些接口 Storage 缓存工具类 ApiCache 类实现 配置 封装 request 请求 总结 背景 为了应对用户流量大,减 ...

最新文章

  1. python执行shell命令查看输出_python 运行 shell 命令并捕获输出_python_酷徒编程知识库...
  2. 牛客小白月赛12 I 华华和月月逛公园 (tarjian 求桥)
  3. BundlePhobia
  4. RNN循环神经网络(吴恩达《序列模型》笔记一)
  5. socket epoll网络编程实例
  6. (转)linux dumpe2fs命令
  7. clousx6机器人怎么导入词库_clousx6词库编程从零入门:变量总结
  8. DDNS 通过阿里云API接口实现 DDNS 动态解析
  9. 第26课时,实践4,定期存款利息计算器
  10. 同一wifi下电脑共享文件夹
  11. 街霸四高难度连技模式全攻略
  12. 信息安全从业者书单推荐(2020.6.28更新)
  13. tensorflow+python flask进行手写识别_python+flask搭建CNN在线识别手写中文网站!简直太屌了!...
  14. 素描嘴巴注意这几个点,轻松画出头像神韵~
  15. 【Wordpress主题】Sakuraio主题的使用与优化
  16. 安富莱C语言编码规范
  17. 主机防病毒攻略之勒索病毒
  18. oracle udt 解析,UDT协议实现分析总结
  19. 银河麒麟V10桌面 佳能打印机驱动安装
  20. Cynthia问题、任务、缺陷管理系统

热门文章

  1. UVA - 1225 Digit Counting(刘汝佳紫书题单(算法竞赛入门经典 第二版 2014)
  2. 期末作业代码网页设计代码 游戏网页网站设计——卡通的萌王游戏网页(13页) HTML+CSS+JavaScript
  3. 【毕业设计】基于stm3 的病人监护系统/健康监护仪
  4. CAN协议的学习与理解
  5. 时间与时间戳相互转换的php实例
  6. Junit单元测试(白盒测试)
  7. 十、roswtf错误检查工具入门(ROS)
  8. WINCC密钥卸载及安装方法
  9. 计算机毕业设计SSM毕业设计管理系统【附源码数据库】
  10. 风云编程python怎么样_二十年编程语言风云,哪款是你的爱豆?