| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package com.xjrsoft.module.hikvision.util;
- import com.google.gson.JsonArray;
- import com.google.gson.JsonObject;
- import com.google.gson.JsonParser;
- import com.xjrsoft.common.utils.ImageUtil;
- import java.io.ByteArrayOutputStream;
- import java.io.InputStream;
- import java.net.URL;
- import java.util.Base64;
- import java.util.HashMap;
- import java.util.Map;
- public class FaceImportUtil {
- private static ApiUtil apiUtil = new ApiUtil();
- public static String ImportTeacherFace(String personId, String fileUrl) {
- JsonParser parser = new JsonParser();
- String apiUrl = "/api/resource/v1/person/condition/personInfo";
- JsonObject paramsJson = new JsonObject();
- paramsJson.addProperty("paramName", "personId");
- JsonArray array = new JsonArray();
- array.add(personId);
- paramsJson.add("paramValue", array);
- String personInfoRes = apiUtil.doPost(apiUrl, paramsJson.toString(), null);
- JsonObject personInfoData = parser.parse(personInfoRes).getAsJsonObject();
- String faceId = null;
- if("0".equals(personInfoData.get("code").getAsString()) && "success".equals(personInfoData.get("msg").getAsString())){
- JsonObject dataJson = personInfoData.get("data").getAsJsonObject();
- if(dataJson.get("total").getAsInt() > 0){
- JsonArray personPhoto = dataJson.get("list").getAsJsonArray().get(0)
- .getAsJsonObject().get("personPhoto").getAsJsonArray();
- if(personPhoto.size() > 0){
- faceId = personPhoto.get(0).getAsJsonObject().get("personPhotoIndexCode").getAsString();
- }
- }
- }
- String response = null;
- String base64String = ImageToBase64(fileUrl);
- JsonObject paramJson = new JsonObject();
- if(faceId == null){
- paramJson.addProperty("personId", personId);
- paramJson.addProperty("faceData", base64String);
- Map<String, String> querys = new HashMap<>();
- querys.put("tagId", "frs");
- String apiPath = "/api/resource/v1/face/single/add";
- response = apiUtil.doPost(apiPath, String.valueOf(paramJson), querys);
- }else{
- String apiPath = "/api/resource/v1/face/single/update";
- paramJson.addProperty("faceId", faceId);
- paramJson.addProperty("faceData", base64String);
- response = apiUtil.doPost(apiPath, paramJson.toString(), null);
- }
- return response;
- }
- public static String ImportStudentFace(String personId, String fileUrl) {
- JsonParser parser = new JsonParser();
- String apiUrl = "/api/resource/v1/person/condition/personInfo";
- JsonObject paramsJson = new JsonObject();
- paramsJson.addProperty("paramName", "personId");
- JsonArray array = new JsonArray();
- array.add(personId);
- paramsJson.add("paramValue", array);
- String personInfoRes = apiUtil.doPost(apiUrl, paramsJson.toString(), null);
- JsonObject personInfoData = parser.parse(personInfoRes).getAsJsonObject();
- String faceId = null;
- if("0".equals(personInfoData.get("code").getAsString()) && "success".equals(personInfoData.get("msg").getAsString())){
- JsonObject dataJson = personInfoData.get("data").getAsJsonObject();
- if(dataJson.get("total").getAsInt() > 0){
- JsonArray personPhoto = dataJson.get("list").getAsJsonArray().get(0)
- .getAsJsonObject().get("personPhoto").getAsJsonArray();
- if(personPhoto.size() > 0){
- faceId = personPhoto.get(0).getAsJsonObject().get("personPhotoIndexCode").getAsString();
- }
- }
- }
- String response = null;
- String base64String = ImageToBase64(fileUrl);
- JsonObject paramJson = new JsonObject();
- if(faceId == null){
- paramJson.addProperty("personId", personId);
- paramJson.addProperty("faceData", base64String);
- Map<String, String> querys = new HashMap<>();
- querys.put("tagId", "frs");
- String apiPath = "/api/resource/v1/face/single/add";
- response = apiUtil.doPost(apiPath, String.valueOf(paramJson), querys);
- }else{
- String apiPath = "/api/resource/v1/face/single/update";
- paramJson.addProperty("faceId", faceId);
- paramJson.addProperty("faceData", base64String);
- response = apiUtil.doPost(apiPath, paramJson.toString(), null);
- }
- return response;
- }
- public static String ImageToBase64(String imageUrl) {
- String base64String = "";
- try {
- URL url = new URL(imageUrl);
- InputStream inputStream = url.openStream();
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- byte[] buffer = new byte[4096];
- int bytesRead;
- while ((bytesRead = inputStream.read(buffer)) != -1) {
- outputStream.write(buffer, 0, bytesRead);
- }
- byte[] imageBytes = outputStream.toByteArray();
- //压缩到200k
- imageBytes = ImageUtil.compressUnderSize(imageBytes, 204800);
- base64String = Base64.getEncoder().encodeToString(imageBytes);
- inputStream.close();
- outputStream.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- int commaIndex = base64String.indexOf(',') + 1;
- return base64String.substring(commaIndex);
- }
- }
|