hecheng 3 年 前
コミット
709e3770d0

+ 8 - 11
zd-modules/zd-algorithm/src/main/java/com/zd/alg/face/controller/FaceManagerApi.java

@@ -57,11 +57,9 @@ public class FaceManagerApi {
 
     @PostMapping()
     @ApiOperation("上传sdk-lib")
-    public R uploadLib(@RequestParam("files") MultipartFile [] multipartFiles) throws IOException {
+    public R uploadLib(@RequestParam("files") MultipartFile [] multipartFiles) {
 
-        String path =faceEngineFactory.getPath();
-
-//        final String path = absolutePath+ File.separator+faceProperties.getLib_folder();
+        String path =FaceEngineFactory.CACHE_LIB_FOLDER;
 
         //先删除原来的文件。。如果直接删除,但又没有保存成功还会导致之前的功能异常,所以这里要先保存再删除
         //生成操作ID
@@ -69,14 +67,13 @@ public class FaceManagerApi {
 
         Map<String,MultipartFile> temp = new HashMap<>(multipartFiles.length);
 
-        for (int i = 0; i < multipartFiles.length; i++) {
+        for (MultipartFile multipartFile : multipartFiles) {
 
-            String originalFilename = multipartFiles[i].getOriginalFilename();
-            if(!libSet.contains(originalFilename))
-            {
-                return R.fail("上传文件名错误,请确认为:"+libSet.stream().collect(Collectors.joining(",")));
+            String originalFilename = multipartFile.getOriginalFilename();
+            if (!libSet.contains(originalFilename)) {
+                return R.fail("上传文件名错误,请确认为:" + String.join(",", libSet));
             }
-            temp.put( originalFilename,multipartFiles[i]);
+            temp.put(originalFilename, multipartFile);
         }
 
         if(CollUtil.isNotEmpty(temp))
@@ -131,7 +128,7 @@ public class FaceManagerApi {
 
     @PostMapping("activation")
     @ApiOperation("激活")
-    public R activation() throws IOException {
+    public R activation() {
         faceEngineFactory.activeOnline();
         return R.ok("激活成功!");
     }

+ 5 - 27
zd-modules/zd-algorithm/src/main/java/com/zd/alg/face/handle/FaceEngineFactory.java

@@ -52,7 +52,7 @@ public class FaceEngineFactory {
     public String ARC_FACE_VERSION = "3.0";
 
     //初始化一个图片模式引擎
-    public FaceEngine initFaceEngineImage() throws IOException {
+    public FaceEngine initFaceEngineImage() {
         //初始化IMAGE模式
         return init();
     }
@@ -161,7 +161,7 @@ public class FaceEngineFactory {
                 if (facePath.length() == faceLength) {
                     continue;
                 }
-                facePath.delete();
+                facePath.deleteOnExit();
             }
             writeToLocal(CACHE_LIB_FOLDER + lib + suffix, inputStream);
         }
@@ -180,19 +180,8 @@ public class FaceEngineFactory {
         input.close();
     }
 
-    public String getPath() throws IOException {
-        FileSystemResource resource = new FileSystemResource("../");
-        String canonicalPath = resource.getFile().getCanonicalPath();
-        if (StrUtil.isNotBlank(faceProperties.getLib_folder())) {
-            canonicalPath = canonicalPath + File.separator + faceProperties.getLib_folder();
-        }
-        return CACHE_LIB_FOLDER;
-    }
-
     public void activation(FaceEngine faceEngine) {
-
-        //
-        String key = "";
+        String key;
         String os = System.getProperty("os.name");
         if (os.toLowerCase().startsWith("win")) {
             key = faceProperties.getWinKey();
@@ -200,7 +189,6 @@ public class FaceEngineFactory {
             key = faceProperties.getLinuxKey();
 
         }
-        logger.info("配置信息打印:" + faceProperties.getAppId() + ", " + key);
         int errorCode = faceEngine.activeOnline(faceProperties.getAppId(), key);
         if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) {
             logger.error("引擎激活失败:errorCode:{},", errorCode);
@@ -213,26 +201,18 @@ public class FaceEngineFactory {
      */
     public void activeOnline() {
         FaceEngine faceEngine = getFaceEngine();
-        if (faceEngine == null) return;
         activation(faceEngine);
         getActiveInfo(faceEngine);
     }
 
     private FaceEngine getFaceEngine() {
-        FaceEngine faceEngine = null;
+        FaceEngine faceEngine;
         //默认放在资源文件下
-
-        String canonicalPath = null;
         try {
             afterPropertiesSet();
         } catch (IOException e) {
-            throw new RuntimeException(e);
+            throw new ServiceException(e.getMessage());
         }
-        //FaceEngine 里加载sdk的方法已经写死了,没办法从打的jar文件中正确获取文件,
-        // 里面用的System.load方法,没办法通过路径加载jar文件中的文件
-        //所以这里只能把lib文件放在jar文件外部
-//            canonicalPath = getPath();
-        logger.info("获取lib文件路径!:{}", CACHE_LIB_FOLDER);
         faceEngine = new FaceEngine(CACHE_LIB_FOLDER);
         return faceEngine;
     }
@@ -240,8 +220,6 @@ public class FaceEngineFactory {
 
     /**
      * 注入IMAGE 模式配置
-     *
-     * @return
      */
     @Bean
     public EngineConfiguration getEngineConfiguration() {

+ 4 - 13
zd-modules/zd-algorithm/src/main/java/com/zd/alg/face/service/FaceService.java

@@ -36,9 +36,8 @@ public class FaceService {
      * 人脸检测
      *
      * @param imageInfo 待检测的图片信息
-     * @return
      */
-    public List<FaceInfo> faceDetect(ImageInfo imageInfo) throws IOException {
+    public List<FaceInfo> faceDetect(ImageInfo imageInfo) {
         List<FaceInfo> faceInfoList = new ArrayList<>();
         int errorCode = faceEngineFactory.initFaceEngineImage().detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList);
         Assert.isTrue(errorCode == ErrorInfo.MOK.getValue(), "人脸检测失败!");
@@ -48,8 +47,6 @@ public class FaceService {
 
     /**
      * 人脸特征提取
-     *
-     * @return
      */
     public FaceFeature faceFeature(ImageInfo imageInfo, List<FaceInfo> faceInfoList) {
         FaceFeature faceFeature = new FaceFeature();
@@ -58,9 +55,7 @@ public class FaceService {
         try {
             imageFaceEngine = faceEngineFactory.initFaceEngineImage();
             errorCode = imageFaceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        } finally {
+        }  finally {
             if (imageFaceEngine != null) {
                 imageFaceEngine.unInit();
             }
@@ -74,20 +69,16 @@ public class FaceService {
 
     /**
      * 人脸对比
-     *
-     * @return
      */
     public Boolean compore(FaceFeature targetFaceFeature, FaceFeature sourceFaceFeature) {
 
         FaceSimilar faceSimilar = new FaceSimilar();
         FaceEngine faceEngine = null;
-        int errorCode = 0;
+        int errorCode;
         try {
             faceEngine = faceEngineFactory.initFaceEngineImage();
             errorCode = faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        } finally {
+        }  finally {
             if (faceEngine != null) {
                 faceEngine.unInit();
             }