微信小程序实现刷脸登录


Posted in Javascript onMay 25, 2018

微信小程序本身并不具有刷脸登录的功能,实现时需要借助百度云的人脸识别的sdk,当然现在百度云是暂时免费的,我们可以登录自行下载使用。

下载地址

后台代码我们使用thinkPHP框架实现,将下载好的sdk导入thinkPHP框架中,就可以写方法使用了。

我们需要将图片上传到自己服务器和百度云人脸库中。

public function login(){ 
    $dir="./***";//自己定义的文件名 
    if(!file_exists($dir)){ 
      mkdir($dir,0777,true); 
    } 
    $upload = new \Think\Upload();// 实例化上传类 
    $upload->maxSize = 3145728 ;// 设置附件上传大小 
    $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型 
    $upload->rootPath = $dir; // 设置附件上传根目录 
    $upload->savepath=''; 
    // 上传单个文件 
    $info = $upload->uploadOne($_FILES['file']); 
    if(!$info) {// 上传错误提示错误信息 
      return $this->ajaxReturn(array('error'=>true,'msg'=>$upload->getError())); 
    }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',$this->face_group(),$options); 
 
      if($ret['error_code']==0){ 
        $user = $ret['result']['user_list'][0]; 
        $no = $user['user_id']; 
        $score = $user['score']; 
 
        if(!empty($no)){ 
          $data = M('student')->field('no,name,sex')->where("no='{$no}'")->find(); 
 
          if($data){ 
            //查到此学号 
            $data['score'] = $score; 
            echo json_encode($data,JSON_UNESCAPED_UNICODE); 
          }else{ 
            //本地库不存在此学号 
            echo "本地数据库没有该学生,百度云库信息:个人信息:{$no},分值:{$score}"; 
          } 
 
        } 
 
      }else{ 
        echo "活体检测失败,".json_encode($ret,JSON_UNESCAPED_UNICODE); 
      } 
    } 
}

里面的search方法是sdk的方法

public function search($image, $imageType, $groupIdList, $options=array()){ 
 
    $data = array(); 
     
    $data['image'] = $image; 
    $data['image_type'] = $imageType; 
    $data['group_id_list'] = $groupIdList; 
 
    $data = array_merge($data, $options); 
    return $this->request($this->searchUrl, json_encode($data), array( 
      'Content-Type' => 'application/json', 
    )); 
}

前三个参数是必填的,后面参数根据自己的实际情况选即可。

微信小程序中需要使用camera组件以及wx.createCameraContext()方法,之后在js调用后台代码即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS基础之undefined与null的区别分析
Aug 08 Javascript
解决js正则匹配换行问题实现代码
Dec 10 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
Aug 24 Javascript
js中遍历Map对象的方法
Jul 27 Javascript
利用JS实现文字的聚合动画效果
Jan 22 Javascript
vue上传图片组件编写代码
Jul 26 Javascript
JS中的BOM应用
Feb 02 Javascript
JavaScript类的继承方法小结【组合继承分析】
Jul 11 Javascript
js中int和string数据类型互相转化实例
Jan 16 Javascript
微信小程序Echarts图表组件使用方法详解
Jun 25 Javascript
CountUp.js数字滚动插件使用方法详解
Oct 17 Javascript
JS使用for in有序获取对象数据
May 19 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
May 25 #Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
May 25 #Javascript
JS简单生成由字母数字组合随机字符串示例
May 25 #Javascript
Webpack中雪碧图插件使用详解
May 25 #Javascript
使用javascript做在线算法编程
May 25 #Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 #Javascript
浅析node.js的模块加载机制
May 25 #Javascript
You might like
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
bootstrap Table服务端处理分页(后台是.net)
2017/10/19 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
python自定义解析简单xml格式文件的方法
2015/05/11 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
后进生转化工作制度
2014/01/17 职场文书
会议开幕词
2015/01/28 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python