您现在的位置是:网站首页> 编程资料编程资料

微信小程序调用摄像头实现拍照功能_javascript技巧_

2023-05-24 548人已围观

简介 微信小程序调用摄像头实现拍照功能_javascript技巧_

本文实例为大家分享了微信小程序调用摄像头实现拍照的具体代码,供大家参考,具体内容如下

微信小程序开发文档

首先,需要用户授权摄像头权限,这一步是必须的

具体步骤:

1、获取用户当前授权状态,看是否已经授权,如果已经授权直接显示摄像头
2、如果用户还没有授权,则调起授权弹框,用户允许授权则显示摄像头
3、如果用户不允许,则提示用户去设置页面打开摄像头权限

用户授权之后,就可以进行拍摄了,微信的camera组件无法显示为圆形,我这里是用一张图片遮盖了

上代码:

wxml:

      

wxss:

.camera {   width: 430rpx;   height: 430rpx;   border-radius: 50%;   margin: 20px auto 0;   position: relative; } .camera image {   position: absolute;   width: 100%;   height: 100%;   z-index: 10; } .camera camera {   width: 428rpx;   height: 428rpx; } button.takePhoto:not([size='mini']) {   position: fixed;   bottom: 0;   left: 0;   width: 100vw;   height: 90rpx;   border-radius: 0; }

js:

Page({   data: {     isAuth: false,     src: ''   },   onLoad() {     const _this = this     wx.getSetting({       success: res => {         if (res.authSetting['scope.camera']) {           // 用户已经授权           _this.setData({             isAuth: true           })         } else {           // 用户还没有授权,向用户发起授权请求           wx.authorize({             scope: 'scope.camera',             success() { // 用户同意授权               _this.setData({                 isAuth: true               })             },             fail() { // 用户不同意授权               _this.openSetting().then(res => {                 _this.setData({                   isAuth: true                 })               })             }           })         }       },       fail: res => {         console.log('获取用户授权信息失败')       }     })   },   // 打开授权设置界面   openSetting() {     const _this = this     let promise = new Promise((resolve, reject) => {       wx.showModal({         title: '授权',         content: '请先授权获取摄像头权限',         success(res) {           if (res.confirm) {             wx.openSetting({               success(res) {                 if (res.authSetting['scope.camera']) { // 用户打开了授权开关                   resolve(true)                 } else { // 用户没有打开授权开关, 继续打开设置页面                   _this.openSetting().then(res => {                     resolve(true)                   })                 }               },               fail(res) {                 console.log(res)               }             })           } else if (res.cancel) {             _this.openSetting().then(res => {               resolve(true)             })           }         }       })     })     return promise;   },   takePhoto() {     const ctx = wx.createCameraContext()     ctx.takePhoto({       quality: 'high',       success: (res) => {         this.setData({           src: res.tempImagePath         })         wx.previewImage({           current: res.tempImagePath, // 当前显示图片的http链接           urls: [res.tempImagePath] // 需要预览的图片http链接列表         })       }     })   } })

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

-六神源码网