阿里云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訪問的身份驗證。如何配置環境變量,請參見http://bestwisewords.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訪問的身份驗證。如何配置環境變量,請參見http://bestwisewords.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-****"
}