Alibaba Cloud OpenAPI エクスプローラー は、API ドキュメント、API デバッグ、および SDK の例を提供し、API 開発を始めるのに役立ちます。このトピックでは、Intelligent Media Management (IMM) SDK for Java をインストールして使用する方法について説明します。
前提条件
AccessKey ペアが作成され、取得されています。詳細については、AccessKey ペアの作成 を参照してください。
OSS が有効化され、バケットが作成され、オブジェクトがバケットにアップロードされています。詳細については、オブジェクトのアップロード を参照してください。
IMM が有効化されています。詳細については、IMM の有効化 を参照してください。
IMM コンソールでプロジェクトが作成されています。IMM コンソールを使用してプロジェクトを作成する方法の詳細については、プロジェクトの作成 を参照してください。
説明CreateProject オペレーションを呼び出してプロジェクトを作成することもできます。詳細については、CreateProject を参照してください。
ListProjects オペレーションを呼び出して、特定のリージョンにある既存のプロジェクトをクエリできます。詳細については、ListProjects を参照してください。
SDK のインストール
IMM API V2020-09-30 を使用するには、IMM SDK V2020-09-30 をインストールする必要があります。
IMM SDK for Java の使用方法の詳細については、クイックスタート を参照してください。
アクセス認証情報
以下のタイプのアクセス認証情報がサポートされています。
一時的なアクセス認証情報: IMM への一時的なアクセス許可など、セキュリティが重要なシナリオでは、一時的なアクセス認証情報を使用することをお勧めします。一時的なアクセス認証情報は、指定された期間内に有効であるため、認証情報の漏洩を防ぐのに役立ちます。一時的なアクセス認証情報はきめ細かいアクセス制御をサポートしているため、過剰な権限によるセキュリティリスクを防ぎます。
長期アクセス認証情報: データセキュリティを確保するために、長期アクセス認証情報を使用しないことをお勧めします。利便性が必要なシナリオでは、長期アクセス認証情報を使用することで、長期間にわたって何度も更新する必要がなくなります。アカウントのセキュリティを確保するために、3 か月ごとに長期アクセス認証情報を変更することをお勧めします。長期アクセス認証情報が漏洩した場合、または使用されなくなった場合は、長期アクセス認証情報を削除または無効にして、セキュリティリスクを軽減できます。
一時的なアクセス認証情報を使用する
IMM SDK for Java を使用して IMM への一時的なアクセスのためのアクセス認証情報を構成する方法の詳細については、環境変数を構成して一時的なアクセス認証情報を保存する を参照してください。
次のサンプルコードは、一時的なアクセス認証情報を使用して、中国 (杭州) リージョンのプロジェクト内の画像で顔と顔の属性を検出する方法の例を示しています。
次のサンプルコードを使用する場合は、IMM エンドポイントを IMM プロジェクトが存在するリージョンのエンドポイントに置き換えてください。IMM プロジェクトと OSS オブジェクトが同じリージョンに存在することを確認してください。
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";
// Alibaba Cloud アカウントの AccessKey ペアには、すべての API オペレーションを呼び出す権限があります。API オペレーションの呼び出しや日常的な O&M の実行には、RAM ユーザーの AccessKey ペアを使用することをお勧めします。
// AccessKey ペア (AccessKey ID と AccessKey シークレット) をプロジェクトコードに含めないでください。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
// この例では、AccessKey ペアは環境変数から取得されます。環境変数の構成方法の詳細については、https://www.alibabacloud.com/help/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);
// レスポンスボディを出力します。
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-****"
}長期アクセス認証情報を使用する
次のサンプルコードは、長期アクセス認証情報を使用して、中国 (杭州) リージョンのプロジェクト内の画像で顔と顔の属性を検出する方法の例を示しています。
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";
// Alibaba Cloud アカウントの AccessKey ペアには、すべての API オペレーションを呼び出す権限があります。API オペレーションの呼び出しや日常的な O&M の実行には、RAM ユーザーの AccessKey ペアを使用することをお勧めします。
// AccessKey ペア (AccessKey ID と AccessKey シークレット) をプロジェクトコードに含めないでください。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
// この例では、AccessKey ペアは環境変数から取得されます。環境変数の構成方法の詳細については、https://www.alibabacloud.com/help/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);
}
// レスポンスボディを出力します。
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-****"
}