FaceImportUtil.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package com.xjrsoft.module.hikvision.util;
  2. import com.google.gson.JsonArray;
  3. import com.google.gson.JsonObject;
  4. import com.google.gson.JsonParser;
  5. import com.xjrsoft.common.utils.ImageUtil;
  6. import java.io.ByteArrayOutputStream;
  7. import java.io.InputStream;
  8. import java.net.URL;
  9. import java.util.Base64;
  10. import java.util.HashMap;
  11. import java.util.Map;
  12. public class FaceImportUtil {
  13. private static ApiUtil apiUtil = new ApiUtil();
  14. public static String ImportTeacherFace(String personId, String fileUrl) {
  15. JsonParser parser = new JsonParser();
  16. String apiUrl = "/api/resource/v1/person/condition/personInfo";
  17. JsonObject paramsJson = new JsonObject();
  18. paramsJson.addProperty("paramName", "personId");
  19. JsonArray array = new JsonArray();
  20. array.add(personId);
  21. paramsJson.add("paramValue", array);
  22. String personInfoRes = apiUtil.doPost(apiUrl, paramsJson.toString(), null);
  23. JsonObject personInfoData = parser.parse(personInfoRes).getAsJsonObject();
  24. String faceId = null;
  25. if("0".equals(personInfoData.get("code").getAsString()) && "success".equals(personInfoData.get("msg").getAsString())){
  26. JsonObject dataJson = personInfoData.get("data").getAsJsonObject();
  27. if(dataJson.get("total").getAsInt() > 0){
  28. JsonArray personPhoto = dataJson.get("list").getAsJsonArray().get(0)
  29. .getAsJsonObject().get("personPhoto").getAsJsonArray();
  30. if(personPhoto.size() > 0){
  31. faceId = personPhoto.get(0).getAsJsonObject().get("personPhotoIndexCode").getAsString();
  32. }
  33. }
  34. }
  35. String response = null;
  36. String base64String = ImageToBase64(fileUrl);
  37. JsonObject paramJson = new JsonObject();
  38. if(faceId == null){
  39. paramJson.addProperty("personId", personId);
  40. paramJson.addProperty("faceData", base64String);
  41. Map<String, String> querys = new HashMap<>();
  42. querys.put("tagId", "frs");
  43. String apiPath = "/api/resource/v1/face/single/add";
  44. response = apiUtil.doPost(apiPath, String.valueOf(paramJson), querys);
  45. }else{
  46. String apiPath = "/api/resource/v1/face/single/update";
  47. paramJson.addProperty("faceId", faceId);
  48. paramJson.addProperty("faceData", base64String);
  49. response = apiUtil.doPost(apiPath, paramJson.toString(), null);
  50. }
  51. return response;
  52. }
  53. public static String ImportStudentFace(String personId, String fileUrl) {
  54. JsonParser parser = new JsonParser();
  55. String apiUrl = "/api/resource/v1/person/condition/personInfo";
  56. JsonObject paramsJson = new JsonObject();
  57. paramsJson.addProperty("paramName", "personId");
  58. JsonArray array = new JsonArray();
  59. array.add(personId);
  60. paramsJson.add("paramValue", array);
  61. String personInfoRes = apiUtil.doPost(apiUrl, paramsJson.toString(), null);
  62. JsonObject personInfoData = parser.parse(personInfoRes).getAsJsonObject();
  63. String faceId = null;
  64. if("0".equals(personInfoData.get("code").getAsString()) && "success".equals(personInfoData.get("msg").getAsString())){
  65. JsonObject dataJson = personInfoData.get("data").getAsJsonObject();
  66. if(dataJson.get("total").getAsInt() > 0){
  67. JsonArray personPhoto = dataJson.get("list").getAsJsonArray().get(0)
  68. .getAsJsonObject().get("personPhoto").getAsJsonArray();
  69. if(personPhoto.size() > 0){
  70. faceId = personPhoto.get(0).getAsJsonObject().get("personPhotoIndexCode").getAsString();
  71. }
  72. }
  73. }
  74. String response = null;
  75. String base64String = ImageToBase64(fileUrl);
  76. JsonObject paramJson = new JsonObject();
  77. if(faceId == null){
  78. paramJson.addProperty("personId", personId);
  79. paramJson.addProperty("faceData", base64String);
  80. Map<String, String> querys = new HashMap<>();
  81. querys.put("tagId", "frs");
  82. String apiPath = "/api/resource/v1/face/single/add";
  83. response = apiUtil.doPost(apiPath, String.valueOf(paramJson), querys);
  84. }else{
  85. String apiPath = "/api/resource/v1/face/single/update";
  86. paramJson.addProperty("faceId", faceId);
  87. paramJson.addProperty("faceData", base64String);
  88. response = apiUtil.doPost(apiPath, paramJson.toString(), null);
  89. }
  90. return response;
  91. }
  92. public static String ImageToBase64(String imageUrl) {
  93. String base64String = "";
  94. try {
  95. URL url = new URL(imageUrl);
  96. InputStream inputStream = url.openStream();
  97. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  98. byte[] buffer = new byte[4096];
  99. int bytesRead;
  100. while ((bytesRead = inputStream.read(buffer)) != -1) {
  101. outputStream.write(buffer, 0, bytesRead);
  102. }
  103. byte[] imageBytes = outputStream.toByteArray();
  104. //压缩到200k
  105. imageBytes = ImageUtil.compressUnderSize(imageBytes, 204800);
  106. base64String = Base64.getEncoder().encodeToString(imageBytes);
  107. inputStream.close();
  108. outputStream.close();
  109. } catch (Exception e) {
  110. e.printStackTrace();
  111. }
  112. int commaIndex = base64String.indexOf(',') + 1;
  113. return base64String.substring(commaIndex);
  114. }
  115. }