java 얼굴 인식 원본 [테스트 효과도 포함) - 서브렛 층(FaceServlet)

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)
	* 

Description( ):get , post

*

Title: doGet

* @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) *

Description( ):post ,

*

Title: doPost

* @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 = "9802974"; String API_KEY = "OVYw5Ok0y9U8n6CfVPYt0wfZ"; String SECRET_KEY = "aCN3lupCarq3rC9G8Rylqz1d36Towp8G"; 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 options = new HashMap(); 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 options = new HashMap(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; } }

좋은 웹페이지 즐겨찾기