阿里云API调试工具OpenAPI Explore提供OpenAPI文档、API调试和SDK示例,帮助您快速入门API开发。本文介绍如何安装和快速使用智能媒体管理Java SDK。
前提条件
已创建并获取AccessKey。具体操作,请参见创建AccessKey。
已开通OSS服务、创建存储空间并上传文件到存储空间。具体操作,请参见控制台上传文件。
已开通智能媒体管理服务。具体操作,请参见开通产品。
已通过智能媒体管理控制台创建项目。具体操作,请参见创建项目。
说明您也可以调用API接口创建项目。具体操作,请参见CreateProject - 创建项目。
您可以调用ListProjects - 列出所有项目信息的列表接口列出指定地域下已创建的所有项目信息。
安装SDK
调用2020-09-30版本的API,需要使用2020-09-30版本的SDK。
使用智能媒体管理Java SDK的操作步骤请参见快速入门。
访问凭证
您可以选择以下类型的访问凭证。
临时访问凭证:对于需要高安全性的场景,例如临时授权应用访问IMM,建议使用临时访问凭证。临时访问凭证可以限制访问的有效期,从而减少访问凭证泄露的风险。此外,临时访问凭证支持权限控制,可以有效地避免权限过大的问题。
长期访问凭证:出于安全性考虑,不建议您使用长期访问凭证,建议您使用临时访问凭证。对于需要便利性的场景,长期访问凭证可以在较长时间内免除多次刷新的麻烦。建议每三个月更换一次长期访问凭证,以提高账号的安全性。当长期访问凭证泄露或者不再使用时,应该及时删除或者禁用相关的访问凭证,以免造成安全风险。
使用临时访问凭证
当您准备临时使用JAVA SDK访问IMM服务时,可以参考配置临时访问凭证
如下以在华东1(杭州)地域中检测图片中的人脸及人脸信息为例,介绍如何使用临时访问凭证通过智能媒体管理Java SDK调用对应API。
复制使用如下示例代码时请将访问域名换成您的IMM项目所在Region的域名,并且IMM项目和OSS文件Region需要保持一致。
package com.aliyun.sample;
import com.aliyun.imm20200930.Client;
import com.aliyun.imm20200930.models.DetectImageFacesRequest;
import com.aliyun.imm20200930.models.DetectImageFacesResponse;
import com.aliyun.sts20150401.models.AssumeRoleRequest;
import com.aliyun.sts20150401.models.AssumeRoleResponse;
import com.aliyun.sts20150401.models.AssumeRoleResponseBody;
import com.aliyun.teaopenapi.models.Config;
public class STS_Test {
// 填写项目名称。请确保已创建该项目。
static String projectName = "imm-java-sdk-doc-demo";
// 填写图片OSS URI。
static String sourceURI = "oss://your-bucket-name/your-path/your-image.jpg";
// 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
// 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
// 本示例通过从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见https://help.aliyun.com/document_detail/2361894.html。
static String immAccessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
static String immAccessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
public static void main(String[] args) throws Exception {
Config stsConfig = new Config()
.setAccessKeyId(immAccessKeyId)
.setAccessKeySecret(immAccessKeySecret)
.setEndpoint("sts-share.cn-hangzhou.aliyuncs.com");
com.aliyun.sts20150401.Client stsClient = new com.aliyun.sts20150401.Client(stsConfig);
AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest()
.setRoleArn("acs:ram::125499367423****:role/STStokenTestRole/STSsessionName")
.setRoleSessionName("immtest")
.setDurationSeconds(3600L);
AssumeRoleResponse assumeRoleResponse = stsClient.assumeRole(assumeRoleRequest);
AssumeRoleResponseBody.AssumeRoleResponseBodyCredentials assumeRoleResponseBodyCredentials = assumeRoleResponse.body.credentials;
Config immConfig = new Config();
immConfig.setAccessKeyId(assumeRoleResponseBodyCredentials.getAccessKeyId());
immConfig.setAccessKeySecret(assumeRoleResponseBodyCredentials.getAccessKeySecret());
immConfig.setSecurityToken(assumeRoleResponseBodyCredentials.getSecurityToken());
immConfig.setEndpoint("imm.cn-hangzhou.aliyuncs.com");
com.aliyun.imm20200930.Client immClient = new com.aliyun.imm20200930.Client(immConfig);
// 构造检测图片中的人脸及人脸信息请求。
DetectImageFacesRequest detectImageFacesRequest = new DetectImageFacesRequest();
detectImageFacesRequest.setProjectName(STS_Test.projectName);
detectImageFacesRequest.setSourceURI(STS_Test.sourceURI);
// 发起请求。
DetectImageFacesResponse detectImageFacesResponse = immClient.detectImageFaces(detectImageFacesRequest);
// 打印响应结果Body信息。
System.out.println(detectImageFacesResponse.body.toMap());
}
}
运行后输出结果如下。
{
"faces": [
{
"attractive": 0.9810000061988831,
"beard": "none",
"beardConfidence": 0.9990000128746033,
"boundary": {
"height": 320,
"left": 217,
"top": 169,
"width": 226
},
"emotion": "happiness",
"emotionConfidence": 1,
"faceQuality": 0.9869999885559082,
"figureClusterId": "figure-cluster-id-unavailable",
"figureConfidence": 1,
"figureId": "92b7ed67-6344-4410-b5ed-****",
"figureType": "face",
"glasses": "none",
"glassesConfidence": 0.9990000128746033,
"hat": "none",
"hatConfidence": 1,
"headPose": {
"pitch": -17.742000579833984,
"roll": 3.2850000858306885,
"yaw": -0.7279999852180481
},
"mask": "none",
"maskConfidence": 0.7559999823570251,
"mouth": "open",
"mouthConfidence": 1,
"sharpness": 1,
...
}
],
"requestId": "5BE08720-554C-566F-A642-****"
}
使用长期访问凭证
如下以在华东1(杭州)地域中检测图片中的人脸及人脸信息为例,介绍如何使用长期访问凭证通过智能媒体管理Java SDK调用对应API。
package com.aliyun.sample;
import com.aliyun.imm20200930.Client;
import com.aliyun.imm20200930.models.DetectImageFacesRequest;
import com.aliyun.imm20200930.models.DetectImageFacesResponse;
import com.aliyun.teaopenapi.models.Config;
public class Sample {
// 填写项目名称。请确保已创建该项目。
static String projectName = "imm-java-sdk-doc-demo";
// 填写图片OSS URI。
static String sourceURI = "oss://your-bucket-name/your-path/your-image.jpg";
// 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
// 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
// 本示例通过从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见https://help.aliyun.com/document_detail/2361894.html。
static String immAccessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
static String immAccessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
public static void main(String[] args) {
Config config = new Config()
.setRegionId("cn-hangzhou") // 填写项目所在地域ID。
.setAccessKeyId(immAccessKeyId)
.setAccessKeySecret(immAccessKeySecret);
Client client = null;
try {
client = new Client(config);
} catch (Exception e) {
throw new RuntimeException(e);
}
// 构造检测图片中的人脸及人脸信息请求。
DetectImageFacesRequest detectImageFacesRequest = new DetectImageFacesRequest();
detectImageFacesRequest.setProjectName(Sample.projectName);
detectImageFacesRequest.setSourceURI(Sample.sourceURI);
// 发起请求。
DetectImageFacesResponse detectImageFacesResponse = null;
try {
detectImageFacesResponse = client.detectImageFaces(detectImageFacesRequest);
} catch (Exception e) {
throw new RuntimeException(e);
}
// 打印响应结果Body信息。
System.out.println(detectImageFacesResponse.body.toMap());
}
}
运行后输出结果如下。
{
"faces": [
{
"attractive": 0.9810000061988831,
"beard": "none",
"beardConfidence": 0.9990000128746033,
"boundary": {
"height": 320,
"left": 217,
"top": 169,
"width": 226
},
"emotion": "happiness",
"emotionConfidence": 1,
"faceQuality": 0.9869999885559082,
"figureClusterId": "figure-cluster-id-unavailable",
"figureConfidence": 1,
"figureId": "92b7ed67-6344-4410-b5ed-****",
"figureType": "face",
"glasses": "none",
"glassesConfidence": 0.9990000128746033,
"hat": "none",
"hatConfidence": 1,
"headPose": {
"pitch": -17.742000579833984,
"roll": 3.2850000858306885,
"yaw": -0.7279999852180481
},
"mask": "none",
"maskConfidence": 0.7559999823570251,
"mouth": "open",
"mouthConfidence": 1,
"sharpness": 1,
...
}
],
"requestId": "5BE08720-554C-566F-A642-****"
}