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


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 相关文章推荐
发现的以前不知道的函数
Sep 19 Javascript
自写的一个jQuery圆角插件
Oct 26 Javascript
尝试在让script的type属性等于text/html
Jan 15 Javascript
Windows8下搭建Node.js开发环境教程
Sep 03 Javascript
javascript判断数组内是否重复的方法
Apr 21 Javascript
JS判断页面是否出现滚动条的方法
Jul 17 Javascript
JavaScript Promise 用法
Jun 14 Javascript
JavaScript中Number对象的toFixed() 方法详解
Sep 02 Javascript
详解Vue中添加过渡效果
Mar 20 Javascript
JS实现字符串去重及数组去重的方法示例
Apr 21 Javascript
vue返回上一页面时回到原先滚动的位置的方法
Dec 20 Javascript
vue微信分享插件使用方法详解
Feb 18 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
js 小数取整的函数
2010/05/10 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
axios post提交formdata的实例
2018/03/16 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
python调用百度语音识别api
2018/08/30 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Python迭代器Iterable判断方法解析
2020/03/16 Python
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
小学教师的自我评价范例
2013/10/31 职场文书
职工运动会邀请函
2014/01/19 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
竞聘书模板
2014/03/31 职场文书
志愿者活动总结
2014/04/28 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
mysql 生成连续日期及变量赋值
2022/03/20 MySQL