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


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 相关文章推荐
JXTree对象,读取外部xml文件数据,生成树的函数
Apr 02 Javascript
Jquery截取中文字符串的实现代码
Dec 22 Javascript
jQuery控制iFrame(实例代码)
Nov 19 Javascript
用javascript关闭本窗口技巧小结
Sep 05 Javascript
jQuery实现的右下角广告窗体跟随效果示例
Sep 16 Javascript
JavaScript cookie详解及简单实例应用
Dec 31 Javascript
mongoose中利用populate处理嵌套的方法
May 26 Javascript
JavaScript多态与封装实例分析
Jul 27 Javascript
详解javascript设计模式三:代理模式
Mar 25 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 jQuery
基于JavaScript实现随机点名器
Feb 25 Javascript
JavaScript实现页面动态验证码的实现示例
Mar 23 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不用递归遍历目录下所有文件的代码
2014/07/04 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
jQuery对表单的操作代码集合
2011/04/06 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
2015/03/03 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
2016/10/21 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
vue组件间通信解析
2017/03/01 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
python实现文本去重且不打乱原本顺序
2016/01/26 Python
python实现归并排序算法
2018/11/22 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
快餐店的创业计划书范文
2014/01/29 职场文书
捐助倡议书范文
2014/04/15 职场文书
我爱读书演讲稿
2014/05/07 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
经营场所使用证明
2015/06/19 职场文书