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


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 相关文章推荐
select组合框option的捕捉实例代码
Sep 30 Javascript
js模拟类继承小例子
Jul 17 Javascript
jQuery 中使用JSON的实现代码
Dec 01 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
Oct 11 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
Aug 21 Javascript
Google Maps API地图应用示例分享
Oct 23 Javascript
浅析jQuery EasyUI中的tree使用指南
Dec 18 Javascript
js实现鼠标触发图片抖动效果的方法
Feb 27 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
Jul 22 Javascript
Ionic 2 实现列表滑动删除按钮的方法
Jan 22 Javascript
20行js代码实现的贪吃蛇小游戏
Jun 20 Javascript
使用jquery实现轮播图效果
Jan 02 jQuery
微信小程序常用简易小函数总结
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模板函数 正则实现代码
2012/10/15 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
PHP生成二维码的两个方法和实例
2014/07/01 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
js对象转json数组的简单实现案例
2014/02/28 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
vuex提交state&&实时监听state数据的改变方法
2018/09/16 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
python使用Image处理图片常用技巧分析
2015/06/01 Python
使用Python的PIL模块来进行图片对比
2016/02/18 Python
numpy数组拼接简单示例
2017/12/15 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
西班牙灯具网上商店:Lampara.es
2018/06/05 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
DataReader和DataSet的异同
2014/12/31 面试题
大学生社团活动总结
2014/04/26 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
三十年同学聚会感言
2015/07/30 职场文书