微信小程序调用摄像头实现手机拍照的功能源码
25-04-07 03:16
1057
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; }
-
私语小程序-语音日记本 录音及播放(含PHP后端)
私语 - 语音日记本描述一个简易的语音日记本小程序(服务器语言选的PHP)。以语音的方式记录生活点滴。替代文字日记的理由是我觉得语音可... 1060 0 24-06-02 -
遇到杀猪盘 - 利用对方的贪婪
如果遇到杀猪盘,钱在某个软件提不出来,先不要着急,去找客服(当时骗你的人,一般都在微信里有群),假装要加大投资,或者有朋友要来投资... 1171 0 24-11-18 -
iconfont带彩色图标
symbol引用这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 这种用法其实是做了一个s... 533 0 21-06-02 -
Ask_AI_v2.0.7_(448)_Mod
Ask AI 是一款集智能对话、图像生成、写作辅助、语言学习、学术支持和个性化推荐于一体的人工智能助手。借助 ChatGPT 和 GPT-4o 技术... 728 0 24-12-11 -
医疗急救小程序
医疗急救小程序是微信小程序的一种典型应用,它通常集成了丰富的医疗急救知识和指南,以帮助用户在紧急情况下进行正确的自救或互救。这类小... 1104 0 24-09-17 -
汽车维修保养商店小程序
随着汽车数量的不断增长和人们对交通工具的依赖程度提高,汽车维修服务的需求也日益增加。在这个背景下,基于微信小程序的汽车预约维修系统... 900 0 24-10-27 -
张国静热点作文精讲班 热点作文课 考研英语
《张国静热点作文精讲班》【英语一】9月份话题第2讲.pptx《张国静热点作文精讲班》【英语一】2月份话题第1讲.pdf《张国静热点作文精讲班》... 1713 0 24-08-20 -
Cloudbox_装机工具箱_2.22.4.28
cloudbox工具箱是一款使用免费的多功能工具箱软件,内置多种软件工具,可以一键激活多种系统,查看最新版本软件,功能强大。cloudbox工具箱... 998 0 25-02-09
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~