wang-hao-jie
2021-12-27 76e9e8e05cbe7dafeba51a235386f20ebf986e25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package cn.exrick.xboot.your.util;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
 
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
 
/**
 * 人脸系统
 * 
 * @author Administrator
 *
 */
public class FaceSystem {
 
    private static final String APP_ID = "10545313";
    private static final String API_KEY = "QSh91rzoNgFvUum4ww34aVoS";
    private static final String SECRET_KEY = "ln6sHT70qoFNEg6VmbvZ6XGvd3PF9KQg";
    private static final String BAIDU_REG_GROUP = "hebeiboying";
 
 
    public static int getResult(String img1,String img2) {
        List<Object>  list = new ArrayList<>();
        Map<String,String>  map = new HashMap<>();
        map.put("image",img1);
        map.put("image_type","URL");
 
        Map<String,String>  map2 = new HashMap<>();
        map2.put("image",img2);
        map2.put("image_type","URL");
        list.add(map);
        list.add(map2);
        String s = JSONUtil.toJsonStr(list);
        return face(s);
    }
 
    public static int face(String jsonBody) {
        String result = HttpUtil.jsonPost2(jsonBody, "https://aip.baidubce.com/rest/2.0/face/v3/match?access_token=" + getAuth());
        try {
            JSONObject jsonObject = JSONUtil.parseObj(result);
            String access_token = jsonObject.getStr("error_msg");
            if(access_token.equals("SUCCESS")){
                String result2 = jsonObject.get("result").toString();
                JSONObject jsonObject2 = JSONUtil.parseObj(result2);
                int score = jsonObject2.getInt("score");
                return score;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }
 
        /**
         * 获取权限token
         * @return 返回示例:
         * {
         * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
         * "expires_in": 2592000
         * }
         */
        public static String getAuth() {
            // 官网获取的 API Key 更新为你注册的
            String clientId = API_KEY;
            // 官网获取的 Secret Key 更新为你注册的
            String clientSecret = SECRET_KEY;
            return getAuth(clientId, clientSecret);
        }
 
        /**
         * 获取API访问token
         * 该token有一定的有效期,需要自行管理,当失效时需重新获取.
         * @param ak - 百度云官网获取的 API Key
         * @param sk - 百度云官网获取的 Securet Key
         * @return assess_token 示例:
         * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
         */
        public static String getAuth(String ak, String sk) {
            // 获取token地址
            String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
            String getAccessTokenUrl = authHost
                    // 1. grant_type为固定参数
                    + "grant_type=client_credentials"
                    // 2. 官网获取的 API Key
                    + "&client_id=" + ak
                    // 3. 官网获取的 Secret Key
                    + "&client_secret=" + sk;
            try {
                URL realUrl = new URL(getAccessTokenUrl);
                // 打开和URL之间的连接
                HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
                connection.setRequestMethod("GET");
                connection.connect();
                // 获取所有响应头字段
                Map<String, List<String>> map = connection.getHeaderFields();
                // 遍历所有的响应头字段
//                for (String key : map.keySet()) {
//                    System.err.println(key + "--->" + map.get(key));
//                }
                // 定义 BufferedReader输入流来读取URL的响应
                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String result = "";
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
                /**
                 * 返回结果示例
                 */
                //System.err.println("result:" + result);
                JSONObject jsonObject = JSONUtil.parseObj(result);
                String access_token = jsonObject.getStr("access_token");
                return access_token;
            } catch (Exception e) {
                System.err.printf("获取token失败!");
                e.printStackTrace(System.err);
            }
            return null;
        }
}