微信小程序调用摄像头实现手机拍照的功能源码
25-04-07 03:16
1025
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; }
-
ChatOn.AI - 简化任务,提升创造力
ChatOn 是一款 AI 驱动的聊天助手,提供跨平台的个性化写作帮助、图像生成和任务自动化。什么是 ChatOnChatOn 是一款集大成的 AI 聊... 917 0 24-12-11 -
Ecshop仿美乐乐家居网手机商城带微信通扫码支付 电脑手机微信三合一
Ecshop仿美乐乐家居网手机商城带微信通扫码支付安装说明1、直接导入mll2017.sql 文件2:修改 data/config.php 文件为你的数据库信息,手... 454 0 21-07-07 -
初高中教材电子版
初中体育学科教材.pdf初中信息技术教材-.pdf初中化学学科教材.pdf初中历史学科教材.pdf初中思想品德教材-.pdf初中数学学科教材.pdf初中物理... 961 0 24-08-19 -
DeskGo_3.3.1491.127-腾讯桌面整理工具独立版
DeskGo是一款由腾讯推出的桌面整理软件,是一款提取自腾讯桌面管家的DeskGo桌面整理绿色单文件版桌面整理工具DeskGo简体中文版可以让你免去... 745 0 25-02-09 -
植物大战僵尸杂交版
植物大战僵尸杂交版2.2下载安装是植物大战僵尸全新衍生系列的新玩法,在挑战中将所有的植物进行杂交组合带来一个新独特的塔防策略的战斗元... 848 0 24-12-19 -
同乐居商城:购物车合算
《微信小程序 - 同乐居商城:购物车合算》是一个专为在线购物体验设计的微信小程序,它提供了一个便捷的购物平台,特别强调购物车功能的... 1136 0 24-11-04 -
笑话集微信小程序
"笑话集小程序" 暗示这是一个包含前端和后端代码的项目,主要用于实现一个笑话分享平台。在这个项目中,前端使用了Vue.js框架,而后端可能... 1051 0 24-10-31 -
移动小商城:基于node,包含前后台
移动小商城是一个基于Node.js技术构建的电子商务平台,旨在为用户提供便捷的移动端购物体验。Node.js是一个使用JavaScript语言运行在服务器... 1193 0 24-09-17
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~