<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