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


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 相关文章推荐
用一段js程序来实现动画功能
Mar 06 Javascript
学习js所必须要知道的一些
Mar 07 Javascript
理解Javascript_08_函数对象
Oct 15 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
Jul 28 Javascript
jquery 删除字符串最后一个字符的方法解析
Feb 11 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
Jan 31 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
Oct 23 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
Oct 27 Javascript
webstorm添加*.vue文件支持
May 08 Javascript
Vue中div contenteditable 的光标定位方法
Aug 25 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
Dec 10 Javascript
koa2的中间件功能及应用示例
Mar 05 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投票程序源码
2007/03/11 PHP
php简单实现无限分类树形列表的方法
2015/03/27 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
2016/09/04 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
python WindowsError的错误代码详解
2017/07/23 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
2019/08/22 Python
Python猴子补丁知识点总结
2020/01/05 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
大专应届生个人简历的自我评价
2013/10/15 职场文书
英语专业毕业生自荐信
2013/10/28 职场文书
《歌唱二小放牛郎》教学反思
2014/04/19 职场文书
七年级地理教学计划
2015/01/22 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL
Redis特殊数据类型bitmap位图
2022/06/01 Redis