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


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的文件是什么文件
Dec 06 Javascript
基于jQuery的仿flash的广告轮播
Nov 05 Javascript
jQuery实现分隔条左右拖动功能
Nov 21 Javascript
JavaScript中的this使用详解
Jul 27 Javascript
JS获取checkbox的个数简单实例
Aug 19 Javascript
提高JavaScript执行效率的23个实用技巧
Mar 01 Javascript
Vue2.0 多 Tab切换组件的封装实例
Jul 28 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
Aug 08 jQuery
vue 引入公共css文件的简单方法(推荐)
Jan 20 Javascript
JS同步、异步、延迟加载的方法
May 05 Javascript
vue实现form表单与table表格的数据关联功能示例
Jan 29 Javascript
JS开发自己的类库实例分析
Aug 28 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
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
srcElement表格样式
2006/09/03 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
Python实现的爬虫刷回复功能示例
2018/06/07 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
Python如何执行系统命令
2020/09/23 Python
Python运算符+与+=的方法实例
2021/02/18 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
八年级历史教学反思
2014/01/10 职场文书
区级文明单位申报材料
2014/05/15 职场文书
禁止高声喧哗的标语
2014/06/11 职场文书