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


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 相关文章推荐
jquery validate使用攻略 第四步
Jul 01 Javascript
javascript 图片裁剪技巧解读
Nov 15 Javascript
关于javascript模块加载技术的一些思考
Nov 28 Javascript
JavaScript实现添加、查找、删除元素
Jul 02 Javascript
Javascript函数的参数
Jul 16 Javascript
weUI应用之JS常用信息提示弹层的封装
Nov 21 Javascript
vue-cli项目中怎么使用mock数据
Sep 27 Javascript
浅析node.js的模块加载机制
May 25 Javascript
解决vue props 拿不到值的问题
Sep 11 Javascript
Vue 中的受控与非受控组件的实现
Dec 17 Javascript
通过实例了解JS 连续赋值
Sep 24 Javascript
vue实现几秒后跳转新页面代码
Sep 09 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
怎么使 Mysql 数据同步
2006/10/09 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
利用php输出不同的心形图案
2016/04/22 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
js文本框输入内容智能提示效果
2015/12/02 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
深入理解vue-loader如何使用
2017/06/06 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
node中实现删除目录的几种方法
2019/06/24 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
深入解析Python中的线程同步方法
2016/06/14 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
python和opencv实现抠图
2018/07/18 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
python配置文件写入过程详解
2019/10/19 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
在PyCharm中安装PaddlePaddle的方法
2021/02/05 Python
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
外贸业务员的岗位职责
2013/11/23 职场文书
师范毕业生个人求职信
2013/12/09 职场文书
执行力心得体会
2013/12/31 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
美丽的大脚观后感
2015/06/03 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang