1.最近公司有个app项目要用到拍照功能,于是上网各种查阅资料,于是先从uniapp文档中看文档有没有快便捷的api直接调用,有两三个uni.chooseFile ,uni.chooseMedia , uni.chooseImage但是我发现都不支持app端,然后技术总监必须要前置摄像头,跳过用户手动反转摄像头这个步骤,因为这样用户体验不好,让我更要快马加鞭的找方案,废话不多说直接上代码
HTML5+:HTML5+ API Reference
/* 签到签退拍照 */
PhotoHandler() {
return new Promise((resolve, reject) => {
try {
/* 2为前置,1为后置 */
let cmr = plus.camera.getCamera();
/* 照片格式:0:png,1:jpg */
let fmt = cmr.supportedImageFormats[0];
/* 拍照 */
cmr.captureImage(filePath => {
plus.io.resolveLocalFileSystemURL(filePath,
entry => {
/* 获取文件数据对象 */
entry?.file(function(file) {
/* 读取文件对象实例 */
const fileReader = new plus.io.FileReader()
/* 以URL编码格式读取文件数据内容 */
fileReader.readAsDataURL(file, 'utf-8')
/* 读取文件完成回调 */
fileReader.onloadend = function(evt) {
console.log(evt.target.result, 'evt');
// resolve(uni.base64ToArrayBuffer(result.base64))
}
})
}, error => {
plus.nativeUI.alert(error.message)
})
plus.nativeUI.toast("拍照成功", { verticalAlign: 'center' });
}, err => {
plus.nativeUI.toast('取消拍照', { verticalAlign: 'center' });
}, { index: 2, format: fmt })
} catch (e) {
plus.nativeUI.toast('拍照出错,请稍后重试', { verticalAlign: 'center' });
}
})
},
代码直接复制就能用,我这边后端要求base64,你们也可以按实际需求修改编码,代码中注释也加好了不用你们一个个查阅文档看api,如有不对欢迎指点~