微信小程序调用摄像头实现手机拍照的功能源码
25-04-07 03:16
1117
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; }
-
使用电脑一定要学会的20个小技巧
644 0 24-02-19 -
网页用JS屏蔽各种按键代码
网页屏蔽鼠标右键Ctrl+N、Shift+F10、F11、F5刷新、退格键等按键<script> //屏蔽鼠标右键Ctrl+N、Shift+F10、F11、F5刷新、退格键 ... 989 0 25-04-07 -
会议精灵小程序
会议精灵是一款专为微信小程序平台设计的智能会议管理工具,旨在帮助用户简化会议筹备、进行和后续管理的全过程。以下是该小程序的主要特点... 1296 0 24-09-18 -
零基础学编程 零基础学单片机C语言程序设计
第一台电子数字计算机的诞生引发了20世纪的电子工业革命。如今,计算机特别是单片微型计算机(简称单片机)得到了迅猛发展。单片机以其高性... 1161 0 24-05-24 -
PHP微信朋友圈广告植入源码
用ftp软件把程序上传到服务器或者空间【推荐8uftp或者flashfxp】 解压到网站跟目录 导入数据库步骤在你网址后面加/phpmyadmin 例子: ... 430 0 21-07-03 -
fancast是一款能够为自己喜欢的偶像去进行活动投票的软件
Fancast软件安卓版,一款专为追星族量身定制的强大投票应用,为粉丝提供了在线投票的便捷途径,让您随时参与到兴趣社区中,及时掌握娱... 856 0 25-06-03 -
配色色谱网站
提供了很多带有名字的单一配色方案,点击某个颜色之后网站的背景就会渐变成这个颜色,还能显示颜色的详细参数,配色都很温柔,非常有意思。 1027 0 21-11-25 -
考研数学历年真题及解析 - 数一
1987-1996考研数学一真题.pdf1987年考研数学一真题答案速查.pdf1987年考研数学(一)真题.pdf1987数学一解析.pdf1988年考研数学(一)真题.... 824 0 24-08-19
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~