首先创建一个compress.js文件(以下是文件中图片压缩方法)

/*** APP端图片压缩*  参数说明:*  img 图片url*  scale缩放比例 1-100*  callback 回调设置返回值
*/
export function translateapp(img, scale, callback) {plus.io.resolveLocalFileSystemURL(img, (entry) => { //通过URL参数获取目录对象或文件对象entry.file((file) => { // 可通过entry对象操作图片 console.log('压缩前图片信息:' + JSON.stringify(file)); //压缩前图片信息if (file.size > 504800) { //   如果大于500Kb进行压缩plus.zip.compressImage({ // 5+ plus.zip.compressImage 了解一下,有详细的示例src: img, //src: 压缩原始图片的路径    dst: img.replace('.png', 'yasuo.png').replace('.PNG','yasuo.PNG').replace('.jpg', 'yasuo.jpg').replace('.JPG', 'yasuo.JPG'),width: '40%', //dst: (String 类型 )压缩转换目标图片的路径,这里先在后面原始名后面加一个yasuo区分一下height: '40%', //width,height: (String 类型 )缩放图片的宽度,高度quality: scale, //quality: (Number 类型 )压缩图片的质量overwrite: true, //overwrite: (Boolean 类型 )覆盖生成新文件// format:'jpg'   //format: (String 类型 )压缩转换后的图片格式}, (event) => {console.log('压缩后图片信息:' + JSON.stringify(event)); //返回压缩后的图片路径callback(event.target);}, function(err) {console.log('Resolve file URL failed: ' + err.message);});} else { //else小于500kb跳过压缩,直接返回现有的srccallback(img);}});}, (e) => { // 返回错误信息console.log('Resolve file URL failed: ' + e.message);});}
/*** H5端图片压缩*  参数说明:*  imgSrc 图片url*  scale缩放比例 0-1*  type 返回图片类型  默认blob *  callback 回调设置返回值
*/
export function translate(imgSrc, scale, type , callback) {var img = new Image();img.src = imgSrc;img.onload = function() {var that = this;var h = that.height; // 默认按比例压缩var w = that.width;var canvas = document.createElement('canvas');var ctx = canvas.getContext('2d');var width = document.createAttribute("width");width.nodeValue = w;var height = document.createAttribute("height");height.nodeValue = h;canvas.setAttributeNode(width);canvas.setAttributeNode(height);ctx.drawImage(that, 0, 0, w,h);var base64 = canvas.toDataURL('image/jpeg', scale);//压缩比例canvas = null;if(type == 'base64'){callback(base64);}else{var blob = base64ToBlob(base64); var blobUrl = window.URL.createObjectURL(blob);//blob地址callback(blobUrl);}}
}
// base转Blob
export function base64ToBlob(base64) { var arr = base64.split(','),mime = arr[0].match(/:(.*?);/)[1],bstr = atob(arr[1]),n = bstr.length,u8arr = new Uint8Array(n);while (n--) {u8arr[n] = bstr.charCodeAt(n);}return new Blob([u8arr], {type: mime});
}

之后在script标签中引用

然后在拍照或选择图片后调用

uni.chooseImage({count: 6, //默认9sizeType: [ 'original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有sourceType: ['camera'], //从相册选择 albumsuccess: function (res) {//区分APP与H5不同端调用不同的方法// #ifdef APP-PLUS /*** APP端图片压缩*  参数说明:*  img 图片url*  scale缩放比例 1-100*  callback 回调设置返回值 */translateapp(res.tempFilePaths[0], 80, imgUrl => {//打印压缩后返回的图片urlconsole.log(imgUrl ); })// #endif// #ifdef H5/*** H5端图片压缩*  参数说明:*  imgSrc 图片url*  scale缩放比例 0-1*  type 返回图片类型:base64、blob(默认blob)   *  callback 回调设置返回值 */translate(res.tempFilePaths[0], 0.7, ' ', imgUrl => {//打印压缩后返回的图片url         console.log(imgUrl );   })// #endif}
});

uniapp H5端与APP端压缩图片相关推荐

  1. Web端和App端测试区别

    Web和App测试区别 测试知识与君共享 1.功能测试角度: 从功能的角度,Web端和APP端测试流程基本一致 2.用例编写角度: 从编写用例方法角度采用等价类,边界值,场景法,错误推测法,流程法,编 ...

  2. 基于Springboot的智慧校园管理系统(PC端和APP端双端应用)

    这里写自定义目录标题 基于Springboot的智慧校园管理系统(PC端和APP端双端应用) 项目整体介绍 项目功能实现 项目源码查询 基于Springboot的智慧校园管理系统(PC端和APP端双端 ...

  3. Web端与App端自动化测试框架

    Web端与App端自动化测试框架 一.Web端与App端的区别 想了解Web端与App端自动化测试框架的区别 ,那么我们就要先来了解Web和App的区别.Web项目一般都是B/S架构,基于浏览器的,而 ...

  4. Flask后端实践 连载十六 Flask实现微信Web端及APP端登录注册

    Flask后端实践 连载十六 Flask实现微信Web端及APP端登录注册 tips: 本文将实现微信Web端和APP端登陆注册 本文基于python3编写 代码仓库 项目场景 某天,项目经理说,项目 ...

  5. Web端和App端测试的区别

    Web端和App端测试的区别 Web项目是B/S架构,基于浏览器的.App项目是C/S架构,必须要有客户端,用户需要安装客户端. 对于更新版本,Web项目只需要更新服务端,客户端就会同步更新,而App ...

  6. uniapp proxy配置代理在h5端和app端

    proxy代理uniapp官网明确指出配置是在h5属性下进行配置,由于app端是不存在跨域的情况,不存在跨域的情况,所以不需要考虑app端代理,只需要将配置信息配对就可以了 我是用的uview封装的请 ...

  7. 移动端开发——APP端上H5容器化建设

    1. 背景 当前移动端和前端的结合愈加紧密,尤其是在偏重活动运营的电商App中,受制于App版本审核,具备研发成本低.可灵活发布等特点的H5页面受到青睐,使其在APP端上承接了越来越多的业务.然而H5 ...

  8. pc端和app端加入微信群聊的测试用例设计点

    pc端微信加入群聊和app端加入微信群聊的测试用例设计点 1.pc端不能创建群聊 2.app端可以通过扫描二维码进入群聊 3.可以通过好友拉取进入群聊 4.好友可以一次拉取多个人进入群聊 5.拉取的人 ...

  9. uniapp h5 页面在移动端 遮罩层禁止滚动 --安卓和ios端完美适配(只是测试了部分机型)

    使用unipp 写h5 页面,在移动端,禁止 遮罩层 出现 滚动问题. 直接在标签上面写上这个就可以了 @touchmove.stop.prevent="moveHandle" , ...

  10. uniapp打包发布至app端 echarts图表不显示问题

    原因:uni中非web端运行在V8引擎中,不支持web端的window.document.navigator等浏览器的API,只支持标准ES语法.因此借助网上的参考,进行Echarts组件封装,借助r ...

最新文章

  1. C++中重载(overload)和重写(override)和隐藏
  2. linux环境切换python3版本
  3. OSI各层相关的协议
  4. tf.layers.flatten
  5. 刷recovery工具apk_红米note4X刷lineage,不喜欢miui10广告臃肿的可以试一试
  6. 实例55:python
  7. 互联网晚报 | 10月23日 星期六 | 恒大宣布全面实施现楼销售;华为开发者大会2021开幕;家乐福中国首家会员店正式开业...
  8. 自动驾驶论文解析(7)
  9. Deepin添加PPA显示没有公钥签名
  10. 企业微信API之通讯录同步
  11. 量子力学原理-波恩的概率论
  12. 现金流贴现法估值模型
  13. 数学建模——更新1——excel箱线图
  14. java call_求问java代码中的call是什么意思?
  15. 远程计算机已加入AAD凭据不工作
  16. Linux --------- 远程操作工具
  17. C++动态规划入门习题+解析
  18. 兴趣社区圈子论坛系统搭建教程,教你上线自己的论坛圈子系统。
  19. 通达oa wbupload.php,通达 OA 代码审计篇二 :11.8 后台 Getshell
  20. openlayers画虚线 (十四)

热门文章

  1. c语言打开文件并输出,文件的读取,c语言打开文件并输出
  2. html中设置背景图片为平铺,html背景图片怎么设置平铺方式
  3. 用Scratch制作手游的角色方向虚拟控制器/虚拟摇杆的方法+源码
  4. win10系统下搭建FTP服务器(完成文件上传与下载)
  5. 学弟啊,你代码能不能不要写得这么烂?
  6. 微商新传奇奢瑞小黑裙、两家小程序内测成员都来这了,SDCC2016微信开发专题议题揭晓...
  7. 下载英文电子书网站,推荐
  8. 全球及中国粮食加工行业产量需求规模与投资产值预测报告2022版
  9. 计算机专业 论文检索,精选】计算机专业文献检索论文参考选题
  10. android 打印图片乱码,Android 无线连接WiFi打印机打印图片全部乱码