微信小程序实现图片压缩功能


Posted in Javascript onJanuary 26, 2018

小龙大哥的微信小程序在初始阶段相当于IE界的6,在这里给大家说一个刚趟过去的坑。

拍照的API。

wx.chooseImage({
 count: 1, // 默认9
 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
 success: function (res) {
 // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
 var tempFilePaths = res.tempFilePaths; 
 }
});

在上边,明确的给出大小的类型,本想省事,然并没有什么用…..
废话少说,给大家说下IOS和安卓中差别,拍照图片压缩的坑。

// 点击照相
 takePictures:function(){
 var that = this;
 wx.chooseImage({
 count: 1, // 默认9
 sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
 sourceType: ['camera'], // 可以指定来源是相册还是相机,默认二者都有
 success: function (res) {
 // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
 var tempFilePaths = res.tempFilePaths;

 that.setData({
 attendSuccessImg:tempFilePaths[0]
 });

 // 上传图片
 //判断机型
 var model = "";
 wx.getSystemInfo({
 success:function(res){
 model= res.model;
 }
 })
 if(model.indexOf("iPhone") <= 0){
 that.uploadFileOpt(that.data.attendSuccessImg);
 console.log(111111)
 }else{
 drawCanvas();

 }

 // 缩放图片
 function drawCanvas(){
 const ctx = wx.createCanvasContext('attendCanvasId');
 ctx.drawImage(tempFilePaths[0], 0, 0, 94, 96);
 ctx.draw();
 that.prodImageOpt();
 }
 }
 });
 },

 // 生成图片
 prodImageOpt:function(){
 var that = this;
 wx.canvasToTempFilePath({ 
 canvasId: 'attendCanvasId',
 success: function success(res) {
 that.setData({
 canvasImgUrl:res.tempFilePath
 });
 // 上传图片
 that.uploadFileOpt(that.data.canvasImgUrl);
 },
 complete: function complete(e) {
 }
 });
 },

再点击拍照后,IOS的进行了图片压缩功能,然而,安卓的依然是那么大,所以 在这过程中,我们需要判断下当前机型,然后执行canvas压缩。

上述代码,拿到即可用,但少一部分wxml中需要添加一个canvas标签。

进行接口调用。希望对大家有帮助。

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 模式实例 观察者模式
Oct 24 Javascript
JS中的构造函数详细解析
Mar 10 Javascript
Flexigrid在IE下不显示数据的有效处理方法
Sep 04 Javascript
关于Javascript中defer和async的区别总结
Sep 20 Javascript
基于Bootstrap框架实现图片切换
Mar 10 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
May 05 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
Nov 22 Javascript
js console.log打印对象时属性缺失的解决方法
May 23 Javascript
为vue项目自动设置请求状态的配置方法
Jun 09 Javascript
vue.js中导出Excel表格的案例分析
Jun 11 Javascript
JS继承实现方法及优缺点详解
Sep 02 Javascript
Angular短信模板校验代码
Sep 23 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
Jan 25 #Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
Jan 25 #Javascript
jquery根据name取得select选中的值实例(超简单)
Jan 25 #jQuery
用jquery获取select标签中选中的option值及文本的示例
Jan 25 #jQuery
利用js给datalist或select动态添加option选项的方法
Jan 25 #Javascript
基于vue.js无缝滚动效果
Jan 25 #Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
Jan 25 #Javascript
You might like
PHP异步调用socket实现代码
2012/01/12 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
php中opendir函数用法实例
2014/11/15 PHP
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
node网页分段渲染详解
2016/09/05 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
python中dir函数用法分析
2015/04/17 Python
python实现rsa加密实例详解
2017/07/19 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
Django视图扩展类知识点详解
2019/10/25 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
Java语言程序设计测试题改错题部分
2014/07/22 面试题
2015年生产车间工作总结
2015/04/22 职场文书
党员违纪检讨书
2015/05/05 职场文书
Java版 单机五子棋
2022/05/04 Java/Android