whyclxw
2025-05-28 e16302f9d475c7cc4dd18c5abf1a23cb5502e362
src/main/java/com/whyc/util/FaceIdentifyUtil.java
@@ -19,11 +19,13 @@
public class FaceIdentifyUtil {
    //外网激活
    public static boolean activeOnline(){
    public static boolean active(int activeType){
        boolean res = false;
        String appId="";
        String sdkKey="";
        String activeKey = YamlProperties.activeKey;
        Integer faceType = YamlProperties.faceType;
        FaceEngine faceEngine =null;
        /*//从官网我的应用中获取
@@ -45,20 +47,43 @@
        String realPath = CommonUtil.classesPath();
        System.out.println("========realPath=========:"+realPath);
        System.out.println("========faceEngine dll 路径=========:"+realPath+ File.separator+"lib"+File.separator+"WIN64");
        //判断是什么系统
        //FaceEngine获取,判断是什么系统和什么版本
        if(System.getProperty("os.name").toLowerCase().contains("window")){
            appId=appId4Win;
            sdkKey=sdkKey4Win;
            faceEngine = new FaceEngine(realPath+ File.separator+"lib"+File.separator+"WIN64");
            appId = appId4Win;
            sdkKey = sdkKey4Win;
            if(faceType == 1 //免费版
            ) {
                faceEngine = new FaceEngine(realPath + File.separator + "lib" + File.separator + "WIN64");
            }else{ //付费版永久
                faceEngine = new FaceEngine(realPath + File.separator + "lib" + File.separator + "WIN64PRO");
            }
        }else{
            appId=appId4Linux;
            sdkKey=sdkKey4Linux;
            faceEngine = new FaceEngine(realPath+ File.separator+"WEB-INF"+File.separator+"lib"+File.separator+"LINUX64");
            if(faceType == 1 //免费版
            ) {
                faceEngine = new FaceEngine(realPath + File.separator + "lib" + File.separator + "LINUX64");
            }else{ //付费版永久
                faceEngine = new FaceEngine(realPath + File.separator + "lib" + File.separator + "LINUX64PRO");
            }
        }
        //激活引擎,只需一次就行,后续无需再激活
        int errorCode = faceEngine.activeOnline(appId, sdkKey);
        int errorCode = 666;
        /**========需要免费版的依赖包才能调用 Start========*/
        errorCode = faceEngine.activeOnline(appId, sdkKey);
        /**========需要免费版的依赖包才能调用 End========*/
        /**========需要增值版的依赖包才能调用 Start========*/
        /*if(activeType == 1){ //在线激活
            errorCode = faceEngine.activeOnline(appId,sdkKey,activeKey);
        }else if(activeType == 2){ //离线激活
            //先服务器生成离线授权文件,离线.dat文件放在 lib下即可
            errorCode = faceEngine.activeOffline(realPath + File.separator + "lib" + File.separator + activeKey+".dat");
        }*/
        /**========需要增值版的依赖包才能调用 End========*/
        if (errorCode != ErrorInfo.MOK.getValue() && errorCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue()) {
            //激活失败
        }else{
@@ -73,9 +98,19 @@
        FaceEngine faceEngine=null;
        String realPath = CommonUtil.classesPath();
        if(System.getProperty("os.name").toLowerCase().contains("window")) {
            faceEngine = new FaceEngine(realPath + File.separator + "lib" + File.separator + "WIN64");
            if(YamlProperties.faceType == 1 //免费版
            ) {
                faceEngine = new FaceEngine(realPath + File.separator + "lib" + File.separator + "WIN64");
            }else{ //付费版永久
                faceEngine = new FaceEngine(realPath + File.separator + "lib" + File.separator + "WIN64PRO");
            }
        }else{
            faceEngine = new FaceEngine(realPath + File.separator + "lib" + File.separator + "LINUX64");
            if(YamlProperties.faceType == 1 //免费版
            ) {
                faceEngine = new FaceEngine(realPath + File.separator + "lib" + File.separator + "LINUX64");
            }else{ //付费版永久
                faceEngine = new FaceEngine(realPath + File.separator + "lib" + File.separator + "LINUX64PRO");
            }
        }
        //引擎配置
        EngineConfiguration engineConfiguration = new EngineConfiguration();
@@ -102,7 +137,8 @@
        int errorCode = faceEngine.init(engineConfiguration);
        if (errorCode != ErrorInfo.MOK.getValue()) {
            System.out.println("初始化引擎失败");
            String errorCodeStr = ErrorInfo.getValidEnum(errorCode).name();
            System.out.println("初始化引擎失败,错误码:"+errorCode+",错误码解释:"+errorCodeStr);
            return null;
        }
        System.out.println("初始化faceEngine引擎成功");
@@ -194,10 +230,12 @@
        // 用于证件照或生活照与证件照之间的特征比对,推荐阈值0.82
        float faceThreshold = YamlProperties.faceThreshold;
        if(faceSimilar.getScore()<faceThreshold){
            res.setCode(0);
            res.setCode(1);
            res.setData(false);
            res.setMsg("人脸不匹配");
        }else{
            res.setCode(1);
            res.setData(true);
            res.setMsg("匹配成功");
        }
        return res;