<font color=red>1 支持安卓平板(横竖屏都可),苹果的iPad。2 颜色图片都可更换。</font>html
此插件包含 android 端和 iOS 端,考虑到有些同窗只作其中一个端的 app,特地分为 2 个插件,减少安装包体积。android 端请点击这里。iOS 端请点击这里。android
最近在使用 uniapp 开发项目,有刷脸实名认证的需求,最终使用百度人脸识别实现了需求。本身作了个 APP 原生插件,给你们介绍下用法。本插件主要功能是经过动做检测活体,采集人脸返回。其余功能须要自主实现,如刷脸登陆,实名认证等。ios
包名安卓和 iOS 可填写同样的:com.longyoung.baidudemo(通常用反域名,如个人域名:www.longyong.com)。<font color=red>注意:uniapp 打包或者打基座要用这个包名。</font>申请百度受权文件,须要用到安卓签名证书的 md5,若是大家公司有原生开发团队,问他们要便可。没有的话,本身生成一个签名证书并获取它的 md5,点击查看方法。<font color=red>注意:uniapp 打包或者打基座要用这个签名证书。</font>json
百度人脸识别申请受权文件步骤要领,点击查看方法。api
4.1 在项目根目录建立文件夹 nativeplugins,购买插件(建议测试版本点击购买下方的试用,正式发布的时候再购买)。缓存
4.2 将百度受权文件 License 放到安卓:nativeplugins/longyoung-BDFaceAuth/android/assets/idl-license.face-android;iOS:nativeplugins/longyoung-BDFaceAuth-iOS/ios/idl-license.face-ios。没路径的请自行建立,nativeplugins 文件夹在项目根目录下。注意 iOS 没有 assets 文件夹,直接放到 ios 文件夹下。
服务器
4.3 manifest.json 文件,选中「App原生插件配置」,选中云端插件,勾选插件 longyoung-BDFaceAuth 和 longyoung-BDFaceAuth-iOS。app
4.4 调用插件,须要传入 licenseID(必传,百度上的 License ID),动做控制参数 actionAry(选传,不传只采集脸,没有动做),动做是否随机参数 isLivenessRandom(选传),是否有声音参数 isSound(选传,iOS 不支持),文字颜色 txtColor(选传),背景颜色 bgColor(选传,iOS 无效),圆的颜色 roundColor(选传),代码以下:dom
<script> var lyBDFaceAuth; var lyBDFaceAuthIOS; export default { data() { return { title: '' } }, onLoad() { // #ifdef APP-PLUS if (uni.getSystemInfoSync().platform == "ios") { //引用插件 lyBDFaceAuthIOS = uni.requireNativePlugin('longyoung-BDFaceAuth-iOS'); //ios } else if (uni.getSystemInfoSync().platform == "android") { //引用插件 lyBDFaceAuth = uni.requireNativePlugin('longyoung-BDFaceAuth'); //android } // #endif }, methods: { onScanFace() { console.error("tagg.onScanFace"); if (uni.getSystemInfoSync().platform == "android") {//安卓 lyBDFaceAuth.scanFace({ licenseID:"longyoung-face-android",//必须与百度受权资料一致 actionAry:["Eye", "Mouth", "HeadLeft", "HeadRight", "HeadLeftOrRight", "HeadUp", "HeadDown"],//不传无动做 isLivenessRandom:0,//不传默认有序,0有序,1随机 isSound:0,//不传默认有声音,0无声,1有声,iOS无效 txtColor:"#3987FD",//文字颜色 bgColor:"#3987FD", //背景颜色,iOS设置无效,须要换图片facecover_new.png,路径 nativeplugins\longyoung-BDFaceAuth-iOS\ios\com.baidu.idl.face.faceSDK.bundle,具体看示例。 roundColor:"#3987FD"//圆的颜色 }, result => { console.log('file://' + result.imgPath); //图片上传服务器 uni.uploadFile({ url:'http://api.longyoung.com/api/open/common/uploadImgTemp',//图片上传地址 filePath: 'file://' + result.imgPath,//图片本地路径,上传服务器须要加这个头'file://' method: 'post', name: 'imgFile',//上传图片参数名 success: (res) => { var data = res.data; } }); //***有些同窗反馈,后台强烈要求传base64,下面是图片转base64的方法,没此需求的能够无视。 var bitmapT = new plus.nativeObj.Bitmap("test"); //test标识谁便取 // 从本地加载Bitmap图片 bitmapT.load(result.imgPath, function() { console.log('加载图片成功'); var base4 = bitmapT.toBase64Data(); console.log('lygg.base64=' + base4); }, function(e) { console.log('加载图片失败:' + JSON.stringify(e)); }); //***有些同窗反馈,后台强烈要求传base64,下面是图片转base64的方法,没此需求的能够无视。 }); } else if (uni.getSystemInfoSync().platform == "ios") {//苹果 lyBDFaceAuthIOS.scanFace({ licenseID: "longyoung-face-ios",//必须与百度受权资料一致 actionAry:["Eye", "Mouth", "HeadLeft", "HeadRight", "HeadLeftOrRight", "HeadUp", "HeadDown"],//不传无动做 isLivenessRandom:0,//不传默认有序,0有序,1随机 isSound:0,//不传默认有声音,0无声,1有声,iOS无效 txtColor:"#3987FD",//文字颜色 bgColor:"#3987FD", //背景颜色,iOS设置无效,须要换图片facecover_new.png,路径 nativeplugins\longyoung-BDFaceAuth-iOS\ios\com.baidu.idl.face.faceSDK.bundle,具体看示例。 roundColor:"#3987FD"//圆的颜色 }, result => { console.log('result=' + result);//图片存在 result.bestImgBase64,显示图片须要加头"data:image/png;base64," + result.bestImgBase64.replace(/[\r\n]/g, "") //***不传base64的,看这里,使用 uni.uploadFile()上传服务器,没此需求的能够无视。 var bitmapT = new plus.nativeObj.Bitmap('test'); //加载base64图片 bitmapT.loadBase64Data(result.bestImgBase64, function(res){ //保存base64图片 bitmapT.save("_faceImg/face.png", {}, function(res){ bitmapT.clear();//销毁bitmap对象 //图片上传服务器 //使用 uni.uploadFile()上传服务器,filePath=res.target uni.uploadFile({ url: 'http://api.longyoung.com/api/open/common/uploadImgTemp', //图片上传地址 filePath: res.target, method: 'post', name: 'imgFile', //上传图片参数名 success: (res) => { var data = res.data; } }); }, function(res){ console.log("longyoung.save.fail=", res); }); }, function(res){ console.log("longyoung.fail=", res); }); //***不传base64的,看这里,使用 uni.uploadFile()上传服务器,没此需求的能够无视。 }); } }, } } </script>
4.5 图片更换post
在对应目录放相应图片(如:close_new.png,success_new.png,warning_new.png),不放使用默认图片,详情可看示例代码。
4.6 打自定义基座(以安卓为例,iOS 相似)
须要打自定义基座才能够进行测试,运行->运行到手机或模拟器->制做自定义基座。注意事项看图片,请使用本身的证书(就是签名文件.jks),申请百度受权文件的时候填写这个证书的 md5。每次打自定义基座的时候,最好先把旧的基座删除(若是存在),路径在根目录下的 unpackage 文件夹里面(LyBDFaceAuthDemo\unpackage\debug\android_debug.apk)。
4.7 勾选自定义基座后运行
运行->运行到手机或模拟器->运行基座选择,勾选自定义调试基座,以后运行到设备,以下图。
5.1 安卓图片存到本地缓存目录,/storage/emulated/0/Android/data/com.longyoung.facedemo/cache/faceImg/face1573781316334.png,上传服务器须要加这个头'file://'。如须要传base64格式,请看上面示例代码。
5.2 iOS 返回的图片为base64格式,请看上面示例代码。
5.3 公众号「longyoung」后台回复「百度人脸识别」获取。
版权归开发者全部,未经受权赞成,不得分享源码。
原文出处:https://www.cnblogs.com/longyoung/p/12121568.html