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


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 相关文章推荐
JQuery onload、ready概念介绍及使用方法
Apr 27 Javascript
JS控制文本框textarea输入字数限制的方法
Jun 17 Javascript
js open() 与showModalDialog()方法使用介绍
Sep 10 Javascript
原生javascript实现无间缝滚动示例
Jan 28 Javascript
浅谈JavaScript字符集
May 22 Javascript
Javascript学习笔记之相等符号与严格相等符号
Nov 23 Javascript
PHP实现的各种中文编码转换类分享
Jan 23 Javascript
JS折半插入排序算法实例
Dec 02 Javascript
BootStrap制作导航条实例代码
May 06 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
Sep 18 Javascript
vue项目打包部署到服务器的方法示例
Aug 27 Javascript
js实现随机点名器精简版
Jun 29 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 ss7.5的数据调用 (笔记)
2010/03/08 PHP
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
php产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
php获取淘宝分类id示例
2014/01/16 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
js数组的操作详解
2013/03/27 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
python logging重复记录日志问题的解决方法
2018/07/12 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
python 实现多维数组转向量
2019/11/30 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
给儿子的表扬信
2014/01/15 职场文书
法制宣传实施方案
2014/03/13 职场文书
数学教师个人工作总结
2015/02/06 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang