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

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

然后我们在后台写刷脸登陆的接口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: "确定"       })       }      })     }    })   },

刷脸登录就成功了。

更多相关文章

  1. php上传图片无法显示的问题
  2. 手把手教你用php实现图片上传功能
  3. 示例PHP实现单文件、多个单文件、多文件上传函数的封装
  4. php上传多张图片时,选择图片后即可预览的问题
  5. 学习PHP中使用Session配合Javascript实现文件上传进度条功能
  6. php如何实现网页常见文件上传功能
  7. 详解php版阿里云OSS图片上传类
  8. 关于PHP CURL上传二进制流图片
  9. web安全之文件上传漏洞攻击与防范方法

随机推荐

  1. Android开发都需要使用什么语言?
  2. Android imageView 实现小红点(动画呼吸效
  3. Android—TextView的XML属性和方法
  4. Android(安卓)学习资料大集合
  5. Fragment的添加方法总结
  6. MIUI 音乐播放器[Android] | 小众软件 >
  7. Android开发干货大全(持续更新)
  8. android 绑定arp
  9. Android Studio 单刷《第一行代码》系列
  10. android中的content provider的使用