mitao
2024-04-30 ab4ea7b8f10c9b66aed9c2ea161a08b25c3851a7
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
package com.sinata.rest.core.huawei.ivs;
 
import cn.hutool.core.codec.Base64Encoder;
import cn.hutool.core.io.FileUtil;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.ivs.v2.region.IvsRegion;
import com.huaweicloud.sdk.ivs.v2.*;
import com.huaweicloud.sdk.ivs.v2.model.*;
import com.sinata.rest.core.huawei.HuaWeiConfig;
 
import java.util.List;
import java.util.ArrayList;
import java.util.UUID;
 
public class DetectStandardByNameAndIdSolution {
 
    public static void main(String[] args) {
        String encode = Base64Encoder.encode(FileUtil.readBytes("D:\\www\\test.jpg"));
        System.out.println(encode);
 
        String similarity = similarity("xx", "500xxxxxxxxxxxxxx", encode);
        System.out.println(similarity);
    }
 
    public static String similarity(String verificationName, String verificationId, String faceImageBase64) {
        String similarity = "0";
        try {
            DetectStandardByNameAndIdResponse response = request(verificationName, verificationId, faceImageBase64);
            similarity = response.getResult().getRespData().get(0).getSimilarity();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return similarity;
    }
 
    public static DetectStandardByNameAndIdResponse request(String verificationName, String verificationId, String faceImage) {
        String ak = HuaWeiConfig.AK;
        String sk = HuaWeiConfig.SK;
 
        ICredential auth = new BasicCredentials()
                .withAk(ak)
                .withSk(sk);
 
        IvsClient client = IvsClient.newBuilder()
                .withCredential(auth)
                .withRegion(IvsRegion.valueOf("cn-north-4"))
                .build();
        DetectStandardByNameAndIdRequest request = new DetectStandardByNameAndIdRequest();
        IvsStandardByNameAndIdRequestBody body = new IvsStandardByNameAndIdRequestBody();
        List<StandardReqDataByNameAndId> listDataReqData = new ArrayList<>();
        listDataReqData.add(
                new StandardReqDataByNameAndId()
                        .withVerificationName(verificationName)
                        .withVerificationId(verificationId)
                        .withFaceImage(faceImage)
        );
        IvsStandardByNameAndIdRequestBodyData databody = new IvsStandardByNameAndIdRequestBodyData();
        databody.withReqData(listDataReqData);
        Meta metabody = new Meta();
        metabody.withUuid(UUID.randomUUID().toString());
        body.withData(databody);
        body.withMeta(metabody);
        request.withBody(body);
        try {
            DetectStandardByNameAndIdResponse response = client.detectStandardByNameAndId(request);
            System.out.println(response.toString());
            return response;
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
        return null;
    }
}