首页 > 数据库 > PHP实现微信小程序人脸识别刷脸登录功能
2019
06-25

PHP实现微信小程序人脸识别刷脸登录功能



首先我们先确认我们的百度云人脸库里已经上传了我们的个人信息照片。

然后我们在后台写刷脸登陆的接口login我们要把拍照获取的照片存储到服务器。


下面我们来看看login接口是如何实现的

public?function?login(){? ???//?上传文件路径? ???$dir?=?"./Uploads/temp/";? ???if(!file_exists($dir)){? ????mkdir($dir,0777,true);? ???}? ???$upload?=?new?\Think\Upload();? ???$upload->maxSize?=?2048000?;//?设置附件上传大小? ???$upload->exts?=?array('jpg',?'gif',?'png',?'jpeg');//?设置附件上传类型? ???$upload->savepath?=?'';? ???$upload->autoSub?=?false;? ???$upload->rootPath?=?$dir;?//?设置附件上传根目录? ???//?上传单个文件? ???$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'];? ?????}? ????}? ???}? ??}


然后进行前台设计

<camera?device-position="{{device?'back':'front'}}"?flash="off"?binderror="error"?style="width:?100%;?height:?300px;">camera>? ????<view?class="weui-cells__title"?>开关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>


我们还可以控制相机的前后镜头

devicePosition()?{? this.setData({? ?device:?!this.data.device,? })? console.log("当前相机摄像头为:",?this.data.device???"后置"?:?"前置");? camera()?{? ?let?{?ctx,?type,?startRecord?}?=?this.data;?},? data:?{? ?src:?null,? },


在js里面调用接口

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:?"确定" ???????})? ??????}? ?????})? ????}? ???})? ??},


刷脸登录就成功了

扫码芷若 获取免费视频学习资料

编程学习

yabo体育vip手机版2019高级编程视频yabo体育vip手机版免费获取