微信小程序调用摄像头实现手机拍照的功能源码
25-04-07 03:16
1058
0
WXML文件代码
<view class="content"> <view class="camera-con"> <camera wx:if="{{cameraStatus}}" device-position="back" flash="off" binderror="error" ></camera> <van-image wx:if="{{!cameraStatus}}" width="100%" height="auto" src="{{src}}" fit="fill" /> </view> <view class="btn-con"> <van-button round color="#999999" size="small" bindtap="rePhoto" >重新拍照</van-button > <van-button class="take" icon="stop-circle-o" color="rgba(0,0,0,0)" bindtap="takePhoto" ></van-button> <van-button round color="#999999" size="small" bindtap="sendPhoto" >提交图片</van-button > </view> </view>
JS文件代码
Page({ data: { cameraStatus: false, src: "", }, onLoad() { const _this = this; wx.getSetting({ success: (res) => { if (res.authSetting["scope.camera"]) { _this.setData({ cameraStatus: true, }); } else { // 用户还没有授权,向用户发起授权请求 wx.authorize({ scope: "scope.camera", success() { // 用户同意授权 _this.setData({ cameraStatus: true, }); }, fail() { // 用户不同意授权 _this.openSetting().then((res) => { _this.setData({ cameraStatus: 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, cameraStatus: false, }); }, }); }, // 重新拍照 rePhoto() { this.setData({ cameraStatus: true, src: "", }); }, });
WXSS文件代码
.content { padding: 0; margin: 0; position: fixed; width: 100%; display: flex; flex-direction: column; box-sizing: border-box; justify-content: space-between; overflow: hidden; height: 100vh; } image { margin: 0; padding: 0; } .content .camera-con { flex: 1; overflow: hidden; } .content .camera-con image, .content .camera-con camera { width: 100%; height: calc(100vh - 148rpx); } .content .btn-con { display: flex; justify-content: space-between; align-items: center; height: 148rpx; background-color: #333333; } .content .btn-con button { margin: 0 30rpx; } .content .btn-con .take { border: 2rpx solid #ffffff; border-radius: 50%; height: 93rpx; width: 93rpx; display: flex; align-items: center; justify-content: center; }
-
PicSizer v4.9.3批量图片压缩软件
PicSizer批量压缩图片是非常好用的图片压缩工具,能够帮助用户轻松减小图片的体积,软件十分智能,能够根据图片的画质来进行压缩,避免出现... 796 0 25-04-22 -
bMap基于百度地图API的地址输入插件
468 0 21-06-02 -
Maven实战
2007年的时候,我加入了一个新成立的开发团队,我们一起做一个新的项目。经验较丰富的同事习惯性地开始编写Ant脚本,也有人希望能尝试一下M... 1025 0 24-05-24 -
手势解锁小程序
手势解锁功能是移动设备中常见的安全机制,用户通过在预设的九宫格上滑动手指绘制特定的图案来解锁应用或设备。在微信小程序中实现这一功能... 1223 0 24-11-04 -
BT下载神器BitComet Stable (build 1.62.11.26) 比特彗星全功能解锁豪华版
BitComet Stable (build 1.62.11.26) 比特彗星全功能解锁豪华版是一款功能强大且易于使用的BitTorrent文件共享网络跨平台客户端,就是... 1003 0 25-02-09 -
腾讯为何总能突破困境
自 1998 年成立以来,腾讯不断推出明星产品,看起来一路走得顺风顺水,其实深入了解腾讯的历史,就会发现每时每刻都危机四伏,毕竟互联网... 1260 0 24-05-29 -
支持上百个网站的漫画下载神器
分享分享怎么下载在线漫画网站的漫画资源吧闪豆下载器(Win)这款软件推荐过几次了,从最开始单纯的「哔哩哔哩视频下载器」到后来的支持多... 550 0 25-04-27 -
m3u8下载器
随着互联网的发展,越来越多的人开始喜欢观看在线视频。尤其是在线直播流媒体和多媒体项目中的M3U8格式视频,因其高清晰度和流畅度而受到欢... 1383 0 24-07-01
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~