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


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 乱码问题
Aug 06 Javascript
jQuery 一个图片切换的插件
Oct 09 Javascript
通过JS来判断页面控件是否获取焦点
Jan 03 Javascript
深入理解javascript作用域和闭包
Sep 23 Javascript
JavaScript与HTML的结合方法详解
Nov 23 Javascript
简单解析JavaScript中的__proto__属性
May 10 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
Feb 21 Javascript
js 倒计时(高效率服务器时间同步)
Sep 12 Javascript
vue路由前进后退动画效果的实现代码
Dec 10 Javascript
前端插件之Bootstrap Dual Listbox使用教程
Jul 23 Javascript
浅谈小程序globalData的那些事儿
Nov 01 Javascript
微信小程序实现首页弹出广告
Dec 03 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
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
PHP多进程编程实例
2014/10/15 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
javascript整除实现代码
2010/11/23 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
js对象的复制继承实例
2015/01/10 Javascript
基于javascript显示当前时间以及倒计时功能
2016/03/18 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
解析vue中的$mount
2017/12/21 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
Python中的pprint折腾记
2015/01/21 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
接口中的方法可以是abstract的吗
2015/07/23 面试题
大学生旅游业创业计划书
2014/01/29 职场文书
2015新年寄语大全
2014/12/08 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
领导离职感言
2015/08/03 职场文书
信息技术国培研修日志
2015/11/13 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
Go使用协程交替打印字符
2021/04/29 Golang