码迷,mamicode.com
首页 > 微信 > 详细

如何使用php实现微信小程序刷脸登录

时间:2020-06-25 09:15:08      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:根目录   实现   var   user   大小   登陆   pos   contents   start   

1.这里我们以百度云的人脸库为准(其他的也可以),确保里面有我们的照片:

在后台写刷脸登陆的接口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‘]; 

     } 

    } 

   } 

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

       }) 

      } 

     }) 

    } 

   }) 

  },

这样刷脸登录就完成了

如何使用php实现微信小程序刷脸登录

标签:根目录   实现   var   user   大小   登陆   pos   contents   start   

原文地址:https://www.cnblogs.com/mo3408/p/13191046.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!