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


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 相关文章推荐
Ext 今日学习总结
Sep 19 Javascript
js中的replace方法使用介绍
Oct 28 Javascript
js判断为空Null与字符串为空简写方法
Feb 24 Javascript
JavaScript创建对象的方式小结(4种方式)
Dec 17 Javascript
javascript中的作用域和闭包详解
Jan 13 Javascript
分享JS数组求和与求最大值的方法
Aug 11 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
Oct 18 Javascript
vue2.0开发实践总结之疑难篇
Dec 07 Javascript
jquery获取下拉框中的循环值
Feb 08 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
Jul 06 Javascript
javascript将16进制的字符串转换为10进制整数hex
Mar 05 Javascript
关于vue 项目中浏览器跨域的配置问题
Nov 10 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 simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
JavaScript自定义事件介绍
2013/08/29 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
domReady的实现案例
2016/11/23 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
党员个人对照检查材料思想汇报
2014/09/16 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
唐山大地震的观后感
2015/06/05 职场文书
导游词之山东孔庙
2019/11/04 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
总结Python使用过程中的bug
2021/06/18 Python
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis