package org.web;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.entity.Users;
import org.json.JSONObject;
import org.service.IUserService;
import org.service.impl.UserServiceImpl;
import sun.misc.BASE64Decoder;
import com.baidu.aip.face.AipFace;
public class FaceServlet extends HttpServlet {
/**
* (非 Javadoc)
* <p>
* Description(描述):get方法,主要调用post
* </p>
* <p>
* Title: doGet
* </p>
*
* @param request
* @param response
* @throws ServletException
* @throws IOException
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* (非 Javadoc)
* <p>
* Description(描述):post方法,主要进行业务操作
* </p>
* <p>
* Title: doPost
* </p>
*
* @param request
* @param response
* @throws ServletException
* @throws IOException
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 防止乱码
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String img = request.getParameter("img"); // 图像数据
String username = request.getParameter("username"); // 用户名
String tag = request.getParameter("tag");
String APP_ID = "11124682";
String API_KEY = "AGQszARPVp7h8vSWvpLfmC6E";
String SECRET_KEY = "G2s2VaLKlkauQeUbbxpQXDrob7X0fHBC";
AipFace client = new AipFace(APP_ID, API_KEY, SECRET_KEY);
if (tag.equals("reg")) {
// 注册
face(username, img, response, request, client);
} else if (tag.endsWith("login")) {
// 登陆
login(img, response, username, request, client);
}
}
/**
*
* @Title: face
* @Description: 该方法的主要作用:注册 1.将base64编码的图片保存 2.将图片路径保存在数据库里面
* 3.将人脸图片识别在人脸库中注册
* @param 设定文件
* @return 返回类型:void
* @throws
*/
public void face(String username, String img, HttpServletResponse response,
HttpServletRequest request, AipFace client) {
Users user = new Users();
IUserService userService = new UserServiceImpl();
// 图片名称
String fileName = System.currentTimeMillis() + ".png";
String basePath = request.getSession().getServletContext()
.getRealPath("picture/");
// 往数据库里面插入注册信息
user.setId(((Long) System.currentTimeMillis()).intValue());
user.setUsername(username);
user.setHeadphoto("/picture/" + fileName);
userService.save(user);
// 往服务器里面上传图片
GenerateImage(img, basePath + "/" + fileName);
// 给人脸库中加入一个脸
boolean flag = facesetAddUser(client, basePath + "/" + fileName,
username);
try {
PrintWriter out = response.getWriter();
// 中文乱码,写个英文比较专业 哈哈
if (flag == false) {
out.print("请把脸放上!!");// 请把两脸放上
} else {
out.print("注册成功!!"); // 注册成功
}
} catch (IOException e) {
// TODO 异常执行块!
e.printStackTrace();
}
}
/**
*
* @Title: login
* @Description: 该方法的主要作用:登陆 实现原理: 1.从前台接收用户名 2.然后把从前台传过来的图片先上传到服务器
* 3.把上传的这张人脸与人脸库中的人脸对应
* @param 设定文件
* @return 返回类型:String
* @throws
*/
public void login(String img, HttpServletResponse response,
String username, HttpServletRequest request, AipFace client) {
// 图片名称
String fileName = System.currentTimeMillis() + ".png";
String basePath = request.getSession().getServletContext()
.getRealPath("picture/");
// 往服务器里面上传图片
GenerateImage(img, basePath + "/" + fileName);
response.setContentType("text/html,charset=utf-8;");
try {
PrintWriter out = response.getWriter();
Double result = verifyUser(client, basePath + "/" + fileName,
username);
if (result > 90) {
// 匹配成功
out.print("登陆成功");
} else {
// 匹配失败
out.print("登陆失败");
}
} catch (IOException e) {
// TODO 异常执行块!
e.printStackTrace();
}
}
/**
*
* @Title: GenerateImage
* @Description: 该方法的主要作用:// 对字节数组字符串进行Base64解码并生成图片
* @param @param imgStr
* @param @param imgFilePath
* @param @return 设定文件
* @return 返回类型:boolean
* @throws
*/
public boolean GenerateImage(String imgStr, String imgFilePath) {
if (imgStr == null) // 图像数据为空
return false;
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] bytes = decoder.decodeBuffer(imgStr);
for (int i = 0; i < bytes.length; ++i) {
if (bytes[i] < 0) {// 调整异常数据
bytes[i] += 256;
}
}
// 生成jpeg图片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(bytes);
out.flush();
out.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* @Title: facesetAddUser
* @Description: 该方法的主要作用:人脸注册,给人脸库中注册一个人脸
* @param @param client 设定文件
* @return 返回类型:void
* @throws
*/
public boolean facesetAddUser(AipFace client, String path, String username) {
// 参数为数据库中注册的人脸
HashMap<String, String> options = new HashMap<String, String>();
JSONObject res = client.addUser(username, "test_users_info",
Arrays.asList("group1", "group2"), path, options);
System.out.println(res.toString(2));
// {"log_id": 3621903690062422}
if (res.keySet().contains("error_code")) {
return false;
}
return true;
}
/**
*
* @Title: verifyUser
* @Description: 该方法的主要作用:人脸认证
* @param @param client
* @param @param path
* @param @param username
* @param @return 设定文件
* @return 返回类型:Double
* @throws
*/
public Double verifyUser(AipFace client, String path, String username) {
HashMap<String, Object> options = new HashMap<String, Object>(1);
options.put("top_num", 5);
/*
* try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO
* 异常执行块! e.printStackTrace(); }
*/
JSONObject res = client.verifyUser(username,
Arrays.asList("group1", "group2"), path, options);
Double result = Double.parseDouble(res.getJSONArray("result").get(0)
.toString());
return result;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
人脸识别登录demo源码
共109个文件
jar:75个
java:9个
class:9个
1星 需积分: 50 164 下载量 80 浏览量
2018-04-19
14:05:04
上传
评论 12
收藏 22.91MB ZIP 举报
温馨提示
通过摄像头获取人脸进行注册,调用百度云人脸识别接口,将照片保存,登录时通过摄像头获取人脸进行登录
资源推荐
资源详情
资源评论
收起资源包目录
人脸识别登录demo源码 (109个子文件)
FaceServlet.class 7KB
BaseDaoUtilImpl.class 3KB
BaseDao.class 3KB
Users.class 1KB
UserDaoImpl.class 948B
UserServiceImpl.class 879B
IBaseDaoUtil.class 337B
IUserService.class 227B
IUserDao.class 216B
.classpath 834B
org.eclipse.wst.common.component 497B
org.eclipse.wst.jsdt.ui.superType.container 49B
hibernate3.jar 2.31MB
ojdbc6.jar 2.01MB
aspectjweaver.jar 1.74MB
netty-3.6.6.Final-sources.jar 1.02MB
freemarker-2.3.19.jar 909KB
org.springframework.context-3.1.1.RELEASE.jar 812KB
struts2-core-2.3.15.1.jar 783KB
netty-3.2.5.Final.jar 774KB
mysql-connector-java-5.1.18-bin.jar 771KB
mysql-connector-5.1.8.jar 707KB
struts2-embeddedjsp-plugin-2.2.1.jar 662KB
xwork-core-2.3.15.1.jar 625KB
javassist-3.9.0.GA.jar 583KB
org.springframework.beans-3.1.1.RELEASE.jar 576KB
sqljdbc2008.jar 570KB
commons-collections-3.2.1.jar 562KB
org.springframework.web-3.1.1.RELEASE.jar 532KB
log4j-1.2.17.jar 478KB
dwr.jar 478KB
org.springframework.core-3.1.1.RELEASE.jar 439KB
antlr-2.7.6.jar 433KB
httpclient-4.2.5.jar 423KB
fastjson-1.2.2.jar 400KB
org.springframework.jdbc-3.1.1.RELEASE.jar 395KB
org.springframework.orm-3.1.1.RELEASE.jar 370KB
org.springframework.aop-3.1.1.RELEASE.jar 324KB
cglib-nodep-2.2.3.jar 315KB
commons-lang3-3.1.jar 308KB
dom4j-1.6.1.jar 307KB
commons-httpclient-3.1.jar 298KB
fastjson-1.2.2-sources.jar 262KB
commons-lang-2.4.jar 256KB
org.springframework.transaction-3.1.1.RELEASE.jar 241KB
commons-codec-1.6.jar 227KB
ognl-3.0.6.jar 223KB
httpcore-4.2.4.jar 222KB
junit.jar 215KB
ehcache-1.2.3.jar 203KB
commons-beanutils-1.7.0.jar 184KB
commons-io-2.4.jar 181KB
org.springframework.expression-3.1.1.RELEASE.jar 172KB
commons-dbcp-1.4.jar 157KB
commons-digester-2.0.jar 145KB
json-lib-2.2.3-jdk15.jar 145KB
commons-validator-1.3.1.jar 136KB
httpclient-cache-4.2.5.jar 113KB
commons-pool-1.6.jar 109KB
org.springframework.context.support-3.1.1.RELEASE.jar 105KB
commons-chain-1.2.jar 90KB
aliyun-java-sdk-core-3.2.3.jar 84KB
nls-service-sdk.jar 77KB
ezmorph-1.0.3.jar 76KB
struts2-json-plugin-2.3.15.1.jar 69KB
oro-2.0.8.jar 64KB
commons-logging-1.1.1.jar 59KB
commons-fileupload-1.2.1.jar 56KB
nls-realtime-sdk.jar 55KB
json-20160810.jar 53KB
org.springframework.asm-3.1.1.RELEASE.jar 52KB
org.springframework.aspects-3.1.1.RELEASE.jar 49KB
jacob.jar 47KB
commons-logging-api-1.1.jar 44KB
face_sdk-1.3.5.jar 41KB
org.hamcrest.core_1.1.0.v20090501071000.jar 27KB
httpmime-4.2.5.jar 26KB
sslext-1.2-0.jar 26KB
slf4j-api-1.5.8.jar 23KB
struts2-spring-plugin-2.3.15.1.jar 21KB
fluent-hc-4.2.5.jar 21KB
jta-1.1.jar 13KB
org.springframework.instrument.tomcat-3.1.1.RELEASE.jar 11KB
aliyun-java-sdk-dysmsapi-1.0.0-SNAPSHOT.jar 10KB
slf4j-log4j12-1.5.8.jar 9KB
org.springframework.instrument-3.1.1.RELEASE.jar 7KB
aopalliance.jar 4KB
FaceServlet.java 7KB
BaseDao.java 4KB
BaseDaoUtilImpl.java 3KB
UserServiceImpl.java 1KB
Users.java 1KB
UserDaoImpl.java 1KB
IUserService.java 977B
IBaseDaoUtil.java 806B
IUserDao.java 524B
jquery-1.8.3.js 261KB
photobooth_min.js 13KB
index.js 2KB
.jsdtscope 503B
共 109 条
- 1
- 2
资源评论
- wannanshan2018-11-06代码不可用,就只有一个前端页面打开摄像头的
ct861011
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功