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


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 相关文章推荐
Ext JS Grid在IE6 下宽度的问题解决方法
Feb 15 Javascript
js 文件引入实现代码
Apr 23 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
Jul 17 Javascript
js简单的表格添加行和删除行操作示例
Mar 31 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
Aug 27 Javascript
jquery实现简单Tab切换菜单效果
Jul 17 Javascript
AngularJs  unit-testing(单元测试)详解
Sep 02 Javascript
Javascript从数组中随机取出不同元素的两种方法
Sep 22 Javascript
微信小程序 slider 详解及实例代码
Jan 10 Javascript
vue mint-ui学习笔记之picker的使用
Oct 11 Javascript
浅谈Angular HttpClient简单入门
May 04 Javascript
vue.js iview打包上线后字体图标不显示解决办法
Jan 20 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 批量更新网页内容实现代码
2010/01/05 PHP
比较全面的PHP数组的使用方法小结
2010/09/23 PHP
兼容性比较好的PHP生成缩略图的代码
2011/01/12 PHP
php静态文件生成类实例分析
2015/01/03 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
JavaScript 函数replace深入了解
2013/03/14 Javascript
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
《两个铁球同时着地》教学反思
2014/02/13 职场文书
市场营销求职信范文
2014/02/21 职场文书
学习十八大坚定理想信念心得体会
2014/03/11 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
求职信格式要求
2014/05/23 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
家属联谊会致辞
2015/07/31 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
python基于opencv批量生成验证码的示例
2021/04/28 Python
Redis命令处理过程源码解析
2022/02/12 Redis