本文实例为大家分享了微信小程序实现身份证取景框拍摄的具体代码,供大家参考,具体内容如下
wxml
<view class="camera_box">
<camera class="camera" wx:if="{{!show}}" device-position="back" flash="off" binderror="error">
<cover-view class="id_m">
<cover-image class="img" src="//img.jbzj.com/file_images/article/202009/202099172501721.png"></cover-image>
</cover-view>
</camera>
<image class="camera_img" src="{{src}}" wx:if="{{show}}"></image>
<view class="action">
<button class="takeBtn" type="primary" bindtap="takePhoto" wx:if="{{!show}}"></button>
<button class="saveImg" type="primary" bindtap="saveImg" wx:if="{{show}}"></button>
<button class="cancelBtn" wx:if="{{show}}" type="primary" bindtap="cancelBtn"></button>
</view>
</view>
wxss
.camera_box {
height: 100vh; width: 100vw;
position: relative;
}
.camera {
height: 85vh; width: 100vw;
z-index: 1;
}
.id_m {
height: 85vh; width: 100vw;
z-index: 999;
background: rgba(0, 0, 0, 0.1);
display: flex;
position: absolute;
}
.id_m .img {
width: 550rpx;
height: 900rpx;
display: block;
position: absolute;
left: 0; right: 0; margin: auto auto;
top: 0; bottom: 0;
}
.id_m .tips_txt {
transform:rotate(90deg);
}
.camera_box .action {
height: 15vh;
position: relative;
display: flex;
justify-content: space-around;
align-items: center;
}
.camera_box .takeBtn {
height: 120rpx; width: 120rpx; border-radius: 50%;
font-size: 24rpx;
background: url('https://cache.yisu.com/upload/information/20200909/112/4082.png') no-repeat center;
background-size: contain;
border: none;
}
.camera_box .cancelBtn {
font-size: 24rpx;
height: 120rpx; width: 120rpx; border-radius: 50%;
background: url('https://cache.yisu.com/upload/information/20200909/112/4083.png') no-repeat center;
background-size: contain;
border: none;
}
.camera_box .saveImg {
background: url('https://cache.yisu.com/upload/information/20200909/112/4084.png') no-repeat center;
font-size: 24rpx;
height: 120rpx; width: 120rpx; border-radius: 50%;
background-size: contain;
border: none;
}
.camera_box .takeBtn::after {
border: none;
}
.camera_img {
height: 85vh; width: 100%;
}
js
Page({
/**
* 页面的初始数据
*/
data: {
src: '',
show: false
},
cancelBtn () {
this.setData({show: false})
},
saveImg () {
wx.showModal({
title: '图片地址',
content: this.data.src,
})
},
takePhoto() {
const ctx = wx.createCameraContext()
const listener = ctx.onCameraFrame((frame) => {
console.log(frame)
})
ctx.takePhoto({
quality: 'high',
success: (res) => {
console.log(res)
this.setData({
src: res.tempImagePath,
show: true
})
listener.stop({
success: (res) => {
console.log(res)
},
fail: (err) =>{
console.log(err)
}
})
},
fail: (err) => {
console.log(err)
}
})
},
error(e) {
console.log(e.detail)
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。