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


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 window.opener返回父页面的应用
Oct 24 Javascript
页面中iframe相互传值传参
Dec 13 Javascript
一个简单的JS鼠标悬停特效具体方法
Jun 17 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
javascript适合移动端的日期时间拾取器
Nov 10 Javascript
javascript事件绑定学习要点
Mar 09 Javascript
js和C# 时间日期格式转换的简单实例
May 28 Javascript
jQuery 选择符详细介绍及整理
Dec 02 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
Vue.js中组件中的slot实例详解
Jul 17 Javascript
vue实现添加与删除图书功能
Oct 07 Javascript
微信js-sdk 录音功能的示例代码
Nov 01 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基础学习小结
2011/04/17 PHP
使用php shell命令合并图片的代码
2011/06/23 PHP
php打造属于自己的MVC框架
2012/03/07 PHP
PHP扩展开发入门教程
2015/02/26 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
使javascript也能包含文件
2006/10/26 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
[43:53]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.22
2019/09/05 DOTA
快速入门python学习笔记
2017/12/06 Python
python做反被爬保护的方法
2019/07/01 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
使用pandas读取文件的实现
2019/07/31 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
最经典的商业地产项目广告词
2014/03/13 职场文书
保护地球的标语
2014/06/17 职场文书
2014年教学工作总结
2014/11/13 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
Python中三种花式打印的示例详解
2022/03/19 Python