瀏覽代碼

Merge remote-tracking branch 'refs/remotes/origin/master' into dev_v5.0.4

deason 11 月之前
父節點
當前提交
50d2fcdbfd

+ 3 - 0
examcloud-starters/examcloud-face-verify-starter/src/main/java/cn/com/qmth/examcloud/starters/face/verify/model/baidu/BaiduApiHelper.java

@@ -260,6 +260,9 @@ public class BaiduApiHelper {
             if (response.isSuccessful()) {
                 BaiduResponse result = new JsonHelper().parseJson(bodyStr, BaiduResponse.class);
                 if (result != null) {
+                    if(log.isDebugEnabled()){
+                        log.debug("[BAIDU] url:{} response:{} cost:{}ms body:{}", requestUrl, response.code(), cost, bodyStr);
+                    }
                     return result;
                 }
             }

+ 9 - 0
examcloud-starters/examcloud-face-verify-starter/src/main/java/cn/com/qmth/examcloud/starters/face/verify/service/FaceVerifyService.java

@@ -10,16 +10,22 @@ public interface FaceVerifyService {
      */
     FaceResult faceVerifyByBaidu(ImageParm image);
 
+    FaceResult faceVerifyByBaidu(ImageParm image, boolean localEnabled);
+
     /**
      * 百度 人脸检测(支持陌生人检测)
      */
     FaceResult faceDetectByBaidu(ImageParm image);
 
+    FaceResult faceDetectByBaidu(ImageParm image, boolean localEnabled);
+
     /**
      * 百度 人脸比对(不支持陌生人检测)
      */
     FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2);
 
+    FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2, boolean localEnabled);
+
     /**
      * 百度 人脸比对(不支持陌生人检测)
      *
@@ -27,6 +33,9 @@ public interface FaceVerifyService {
      */
     FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2, Double expectFaceCompareScore);
 
+    FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2, Double expectFaceCompareScore,
+            boolean localEnabled);
+
     /**
      * Face++ 人脸检测(支持陌生人检测)
      */

+ 51 - 0
examcloud-starters/examcloud-face-verify-starter/src/main/java/cn/com/qmth/examcloud/starters/face/verify/service/impl/FaceVerifyServiceImpl.java

@@ -40,6 +40,21 @@ public class FaceVerifyServiceImpl implements FaceVerifyService {
         return BaiduApiHelper.faceVerify(properties, params);
     }
 
+    @Override
+    public FaceResult faceVerifyByBaidu(ImageParm image, boolean localEnabled) {
+        Map<String, String> imageData = this.buildImageParmForBaidu(image);
+        imageData.put("face_field", "spoofing");
+
+        List<Map<String, String>> images = new ArrayList<>();
+        images.add(imageData);
+
+        String params = new JsonHelper().toJson(images);
+        if (localEnabled) {
+            return BaiduApiHelper.faceVerifyUseLocalApi(properties, params);
+        }
+        return BaiduApiHelper.faceVerify(properties, params);
+    }
+
     @Override
     public FaceResult faceDetectByBaidu(ImageParm image) {
         Map<String, String> imageData = this.buildImageParmForBaidu(image);
@@ -53,11 +68,29 @@ public class FaceVerifyServiceImpl implements FaceVerifyService {
         return BaiduApiHelper.faceDetect(properties, params);
     }
 
+    @Override
+    public FaceResult faceDetectByBaidu(ImageParm image, boolean localEnabled) {
+        Map<String, String> imageData = this.buildImageParmForBaidu(image);
+        imageData.put("liveness_control", "NORMAL");
+        imageData.put("max_face_num", "2");
+
+        String params = new JsonHelper().toJson(imageData);
+        if (localEnabled) {
+            return BaiduApiHelper.faceDetectUseLocalApi(properties, params);
+        }
+        return BaiduApiHelper.faceDetect(properties, params);
+    }
+
     @Override
     public FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2) {
         return this.faceCompareByBaidu(image1, image2, properties.getBaiduExpectFaceCompareScore());
     }
 
+    @Override
+    public FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2, boolean localEnabled) {
+        return this.faceCompareByBaidu(image1, image2, properties.getBaiduExpectFaceCompareScore(), localEnabled);
+    }
+
     @Override
     public FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2, Double expectFaceCompareScore) {
         List<Map<String, String>> images = new ArrayList<>();
@@ -75,6 +108,24 @@ public class FaceVerifyServiceImpl implements FaceVerifyService {
         return BaiduApiHelper.faceCompare(properties, params, expectFaceCompareScore);
     }
 
+    @Override
+    public FaceResult faceCompareByBaidu(ImageParm image1, ImageParm image2, Double expectFaceCompareScore,
+            boolean localEnabled) {
+        List<Map<String, String>> images = new ArrayList<>();
+        images.add(this.buildImageParmForBaidu(image1));
+        images.add(this.buildImageParmForBaidu(image2));
+
+        if (expectFaceCompareScore == null) {
+            expectFaceCompareScore = properties.getBaiduExpectFaceCompareScore();
+        }
+
+        String params = new JsonHelper().toJson(images);
+        if (localEnabled) {
+            return BaiduApiHelper.faceCompareUseLocalApi(properties, params, expectFaceCompareScore);
+        }
+        return BaiduApiHelper.faceCompare(properties, params, expectFaceCompareScore);
+    }
+
     private Map<String, String> buildImageParmForBaidu(ImageParm image) {
         if (image == null || StringUtils.isBlank(image.value())) {
             throw new IllegalArgumentException("ImageParm must be not empty.");