技术员博客      html  css  js  c++  java
  • PHP实现微信小程序人脸识别刷脸登录功能

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

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

    publicfunctionlogin(){
    //上传文件路径
    $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){//上传错误提示错误信息
    echojson_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);
    //echojson_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'];
    }
    }
    }
    }

    然后进行前台设计

    <cameradevice-position="{{device?'back':'front'}}"flash="off"binderror="error"style="100%;height:300px;"></camera>
    <viewclass="weui-cells__title">开关</view>
    <viewclass="weui-cellsweui-cells_after-title">
    <viewclass="weui-cellweui-cell_switch">
    <viewclass="weui-cell__bd">切换摄像头</view>
    <viewclass="weui-cell__ft">
    <switchbindtap="devicePosition"/>
    </view>
    </view>
    </view>
    <buttontype="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(){
    constctx=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){
    //vardata=res.data
    //varjson=JSON.parse(data)
    console.log(res)
    wx.showModal({
    title:"提示",
    content:res.data,
    showCancel:false,
    confirmText:"确定"
    })
    }
    })
    }
    })
    },

    刷脸登录就成功了

  • 相关阅读:
    通过分区(Partition)提升MySQL性能
    UBuntu CMake工程配置基础
    (99+) 为什么信用卡开卡容易消卡难?请谈谈你在信用卡使用方面的经验? 知乎
    tmp目录删除和tmpwatch命令的使用
    VS2008增加ActiveX控件测试容器
    IOCP模型与网络编程 .
    正则表达式速查表
    C++开发常用工具“群英会”
    程序员自创的一首歌 "Java EE 5"
    高精度运算(运算符重载)
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15454244.html
Copyright © 2011-2022 技术员博客