微信小程序拍照和摄像功能实现方法示例


Posted in Javascript onFebruary 01, 2019

本文实例讲述了微信小程序拍照和摄像功能实现方法。分享给大家供大家参考,具体如下:

拍照

原先的想法是使用微信的camera组件来实现,并且模拟发朋友圈的样子来进行相机的设置,其实就是将camera组件的大小设置成根屏幕一样大,并在上面使用一个cover-image组件来给用户进行点击,可是实际上的情况是第一,cover-image组件有时候会消失,第二,整个流程实现起来很僵硬,页面跳转也是卡的要死,后来无意间发现了另一个API:wx.chooseImage,这个API会自己去调用相机和相册,之后的工作完全交给底层去实现,简直是简单到没朋友:

// 拍照功能
getLocalImage:function(){
    var that=this;
    wx.chooseImage({
      count:1,
      success:function(res){
        // 这里无论用户是从相册选择还是直接用相机拍摄,拍摄完成后的图片临时路径都会传递进来
        app.startOperating("保存中")
        var filePath=res.tempFilePaths[0];
        var session_key=wx.getStorageSync('session_key');
        // 这里顺道展示一下如何将上传上来的文件返回给后端,就是调用wx.uploadFile函数
        wx.uploadFile({
          url: app.globalData.url+'/home/upload/uploadFile/session_key/'+session_key,
          filePath: filePath,
          name: 'file',
          success:function(res){
            app.stopOperating();
            // 下面的处理其实是跟我自己的业务逻辑有关
            var data=JSON.parse(res.data);
            if(parseInt(data.status)===1){
              app.showSuccess('文件保存成功');
            }else{
              app.showError("文件保存失败");
            }
          }
        })
      },
      fail:function(error){
        console.error("调用本地相册文件时出错")
        console.warn(error)
      },
      complete:function(){
      }
    })
  },

其中封装在app.js中的函数可以看我这篇文章:微信小程序一些简易小函数总结。

摄影

其实跟上面的原理是一样的,对应的API就是wx.chooseVideo,其中可以设置拍摄时间,用户拍摄结束以及用户拍摄时间超时等,都会调用success的回调函数,所以又是可以安心处理接下来的业务流程,而不用需要调用camera组件。

// 摄像功能
  getLocalVideo:function(){
    var that=this;
    var session_key=wx.getStorageSync('session_key');
    wx.chooseVideo({
      maxDuration:10,
      success:function(res1){
        app.startOperating("上传中")
        // 这个就是最终拍摄视频的临时路径了
        var tempFilePath=res1.tempFilePath;
      },
      fail:function(){
        console.error("获取本地视频时出错");
      }
    })
  },

实现起来也是很简单,但是有一个问题就是没有办法像调用camera组件一样获取视频的缩略图,这是现在唯一的缺陷。但是总体来说,比起调用camera组件,这样实现起来的确简单了很多。

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
理解JavaScript中的事件
Sep 23 Javascript
Javascript中的数学函数
Apr 04 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
Oct 27 Javascript
20个最新的jQuery插件
Jan 13 Javascript
jQuery筛选器children()案例详解(图文)
Feb 17 Javascript
jquery验证手机号是否正确实例讲解
Nov 17 Javascript
jQuery实现点击行选中或取消CheckBox的方法
Aug 01 Javascript
微信小程序 网络请求(post请求,get请求)
Jan 17 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
Sep 03 jQuery
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
May 12 jQuery
微信小程序导航栏跟随滑动效果的实现代码
May 14 Javascript
关于JSON解析的实现过程解析
Oct 08 Javascript
微信小程序常用简易小函数总结
Feb 01 #Javascript
使用Angular自定义字段校验指令的方法示例
Feb 01 #Javascript
angular中如何绑定iframe中src的方法
Feb 01 #Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
Feb 01 #Javascript
JS集合set类的实现与使用方法示例
Feb 01 #Javascript
详解如何使用webpack打包多页jquery项目
Feb 01 #jQuery
详解Vue中watch对象内属性的方法
Feb 01 #Javascript
You might like
用PHP制作静态网站的模板框架(三)
2006/10/09 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
jquery蒙版控件实现代码
2010/12/08 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
Python递归函数实例讲解
2019/02/27 Python
python-tornado的接口用swagger进行包装的实例
2019/08/29 Python
python取均匀不重复的随机数方式
2019/11/27 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
C# Debug和Testing相关面试题
2015/10/25 面试题
自我评价的范文
2014/02/02 职场文书
白岩松演讲
2014/05/21 职场文书
公开承诺书格式
2014/05/21 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
政风行风整改方案
2014/10/25 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
python通过opencv调用摄像头操作实例分析
2021/06/07 Python
详解Python中下划线的5种含义
2021/07/15 Python