就这几行代码就差不多可以实现我想要的功能了,拍照功能单独用定时器来调用,只差一个隐藏摄像头的功能了,在官网上找找。有没有新发现......
在组件里发现有这么一个模块叫
cover-view
描述:覆盖在原生组件之上的文本视图,可覆盖的原生组件包括map、video、canvas、camera、live-player、live-pusher,只支持嵌套cover-view、cover-image,可在cover-view中使用button。
这模块的意思是说cover-view 可以覆盖掉camera这控件
camera这模块也是这么个奇葩的存在,你用z-index层次不管多大都无法覆盖掉,这里就要用到cover-view组件了
一开始我也不知道怎么用,于是上网查了查,博友们都是这么说的 cover-view 嵌套到 camera 里面去就行了,
也就是这么个意思
<camera> <cover-view></cover-view> </camera>
这样效果是可以但太占空间了 于是我就把<camera>宽高设成了
width: 10rpx;
height: 14rpx;
只要不隐藏不为0都是可以的拍照的清晰度没有变化只有宽高比例有变化
同样<cover-view>也要把摄像机铺满,背景色调为周围一样的颜色这就相当于隐藏摄像头功能了,再加上定时器抓拍就完成了这项功能。
完成代码:
wxml代码:
<view> <view> <camera device-position="front" flash="off" binderror="error" bindstop='bindstop' binderror='binderror'> <cover-view></cover-view> </camera> <view> <button type="primary" bindtap="stoptime">停止</button> </view> <view>预览</view> <image wx:if="https://www.jb51.net/{{src}}" mode="widthFix" src="https://www.jb51.net/{{src}}"></image> </view> </view>
wxss代码:
.preview-tips { margin: 20rpx 0; } .video { margin: 50px auto; width: 100%; height: 300rpx; } .border_writh{ width: 30rpx; height: 30rpx; background-color:#1aad19; } .camera{ position: absolute; top: 5rpx; left: 5rpx; width: 10rpx; height: 14rpx; }
js代码:
var time = null; Page({ /** * 页面的初始数据 */ data: { }, onLoad() { }, //定时器拍照 setTime: function() { let that = this let ctx = wx.createCameraContext() time = setInterval(function() { if (Math.round(Math.random()) == 1) { console.log('拍照') //拍照 ctx.takePhoto({ quality: 'high', success: (res) => { console.log(res.tempImagePath) that.setData({ src: res.tempImagePath }) that.localhostimgesupdata(res.tempImagePath) } }) } }, 1000 * 10) //循环间隔 单位ms }, //图片上传 localhostimgesupdata: function(imgPath) { console.log('图片上传') wx.uploadFile({ url: '', /图片上传服务器真实的接口地址 filePath: imgPath, name: 'imgFile', success: function(res) { wx.showToast({ title: '图片上传成功', icon: 'success', duration: 2000 }) } }) }, stoptime: function() { console.log('定时停止') clearInterval(time) }, bindstop: function() { console.log('非正常停止') }, binderror: function() { console.log('用户拒绝授权') }, /** * 生命周期函数--监听页面显示 */ onShow: function() { console.log('显示') //定时器 this.setTime(); }, /** * 生命周期函数--监听页面隐藏 */ onHide: function() { console.log('隐藏') clearInterval(time) }, /** * 生命周期函数--监听页面卸载 */ onUnload: function() { console.log('卸载') clearInterval(time) }, })
总结
以上所述是小编给大家介绍的微信小程序调用摄像头隐藏式拍照功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章: