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


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 asp.net 获取当前超链接中的文本
Apr 14 Javascript
js中通过split函数分割字符串成数组小例子
Sep 21 Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 Javascript
JavaScript的兼容性与调试技巧
Nov 22 Javascript
javascript入门之window对象【新手必看】
Nov 22 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
Jan 08 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
Feb 13 Javascript
Mongoose中document与object的区别示例详解
Sep 18 Javascript
js实现点击按钮复制文本功能
Jul 20 Javascript
如何安装控制器JavaScript生成插件详解
Oct 21 Javascript
Three.js实现3D机房效果
Dec 30 Javascript
微信小程序事件流原理解析
Nov 27 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 gzip压缩输出的实现方法
2013/04/27 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
JavaScript打字小游戏代码
2011/12/26 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
使用Python发现隐藏的wifi
2020/03/04 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
python实现逻辑回归的示例
2020/10/09 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
网络方面基础面试题
2012/11/16 面试题
科研课题实施方案
2014/03/18 职场文书
主题实践活动总结
2014/05/08 职场文书
个人四风对照检查材料
2014/09/26 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript