PHP實現(xiàn)微信小程序人臉識別刷臉登錄功能
首先我們先確認(rèn)我們的百度云人臉庫里已經(jīng)上傳了我們的個人信息照片
然后我們在后臺寫刷臉登陸的接口login我們要把拍照獲取的照片存儲到服務(wù)器
public function login(){ // 上傳文件路徑 $dir = "./Uploads/temp/"; if(!file_exists($dir)){ mkdir($dir,0777,true); } $upload = new \Think\Upload(); $upload->maxSize = 2048000 ;// 設(shè)置附件上傳大小 $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設(shè)置附件上傳類型 $upload->savepath = ''; $upload->autoSub = false; $upload->rootPath = $dir; // 設(shè)置附件上傳根目錄 // 上傳單個文件 $info = $upload->uploadOne($_FILES['file']); if(!$info) {// 上傳錯誤提示錯誤信息 echo json_encode(array('error'=>true,'msg'=>$upload->getError()),JSON_UNESCAPED_UNICODE); }else{// 上傳成功 獲取上傳文件信息 $file = $dir . $info['savepath'].$info['savename']; $image = base64_encode(file_get_contents($file)); $client = $this->init_face(); $options['liveness_control'] = 'NORMAL'; $options['max_user_num'] = '1'; $ret = $client->search($image,'BASE64','student',$options); // echo json_encode($ret,JSON_UNESCAPED_UNICODE); // exit; if($ret['error_code']==0){ $user = $ret['result']['user_list'][0]; $no = $user['user_id']; $score = $user['score']; if($score>=95){ $data = M('student')->where("no = '{$no}'")->find(); $data['score'] = $score; // $data['name'] = json_decode($data['name'],true); // $data['sex'] = json_decode($data['sex'],true); echo '識別成功' . json_encode($data,JSON_UNESCAPED_UNICODE); }else{ echo '識別失敗' . $data['score']; } } } }
然后進(jìn)行前臺設(shè)計
<camera device-position="{{device?'back':'front'}}" flash="off" binderror="error" style="width: 100%; height: 300px;"></camera> <view class="weui-cells__title" >開關(guān)</view> <view class="weui-cells weui-cells_after-title"> <view class="weui-cell weui-cell_switch"> <view class="weui-cell__bd">切換攝像頭</view> <view class="weui-cell__ft" > <switch bindtap="devicePosition" /> </view> </view> </view> <button type="primary" bindtap="takePhoto">刷臉登錄</button>
我們還可以控制相機(jī)的前后鏡頭
devicePosition() { this.setData({ device: !this.data.device, }) console.log("當(dāng)前相機(jī)攝像頭為:", this.data.device ? "后置" : "前置"); camera() { let { ctx, type, startRecord } = this.data; }, data: { src: null, },
在js里面調(diào)用接口
takePhoto() { const ctx = wx.createCameraContext() ctx.takePhoto({ quality: 'high', success: (res) => { this.setData({ src: res.tempImagePath }) console.log(res) wx.uploadFile({ url: '', //僅為示例,非真實的接口地址 filePath: this.data.src, name: 'file', formData: { }, success: function (res) { // var data = res.data // var json = JSON.parse(data) console.log(res) wx.showModal({ title: "提示", content: res.data, showCancel: false, confirmText: "確定" }) } }) } }) },
刷臉登錄就成功了
總結(jié)
以上所述是小編給大家介紹的PHP實現(xiàn)微信小程序人臉識別刷臉登錄,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
PHP+Mysql+Ajax+JS實現(xiàn)省市區(qū)三級聯(lián)動
最近做了個項目,需要用到省市區(qū)三級聯(lián)動,上網(wǎng)翻了不少資料,于是有了下面的思路和代碼2014-05-05Laravel5.4框架中視圖共享數(shù)據(jù)的方法詳解
這篇文章主要介紹了Laravel5.4框架中視圖共享數(shù)據(jù)的方法,結(jié)合實例形式詳細(xì)分析了Laravel框架視圖共享數(shù)據(jù)的原理、步驟與相關(guān)操作注意事項,需要的朋友可以參考下2019-09-09PHP中的gzcompress、gzdeflate、gzencode函數(shù)詳解
這篇文章主要介紹了PHP中的gzcompress、gzdeflate、gzencode函數(shù)詳解,本文深入分析了它們的相同點和不同點,需要的朋友可以參考下2014-07-07PHP文件管理之實現(xiàn)網(wǎng)盤及壓縮包的功能操作
這篇文章主要介紹了PHP文件管理之實現(xiàn)網(wǎng)盤及壓縮包的功能操作,需要的朋友可以參考下2017-09-09php+ajax導(dǎo)入大數(shù)據(jù)時產(chǎn)生的問題處理
介紹:就是想實現(xiàn)簡單的ajax上傳數(shù)據(jù),但是當(dāng)數(shù)據(jù)量較大的時候,問題就一個一個接著來了,其實數(shù)據(jù)也不是很大,就是csv格式數(shù)據(jù) 不到5w條數(shù)據(jù)。大小5M,一開始認(rèn)為這個很簡單,就是先上傳一下文件,然后讀取一下,存到數(shù)據(jù)庫就好了,結(jié)果,可能我比較菜,弄了半天做出這個功能。環(huán)境是linux.2014-06-06php calender(日歷)二個版本代碼示例(解決2038問題)
一個簡單的php Calender(日歷),解決了2038問題,這樣在32位機(jī)和64位機(jī)上都可以用了,代碼很簡單,方便修改2013-12-12解決phpmyadmin中缺少mysqli擴(kuò)展問題的方法
本篇文章是對解決phpmyadmin中缺少mysqli擴(kuò)展問題的方法進(jìn)行了詳細(xì)的介紹。需要的朋友參考下2013-05-05