edit-icon download-icon

Java SDK

最終更新日: Mar 13, 2020

デモのダウンロード

前提条件

  1. Access Key ID と Access Key Secret を取得します。Image Search コンソールにログインし、右上のアバターの上にカーソルを置き、[Access Key 管理] を選択して、Access Key ID と Access Key Secret を表示します。

  2. Image Search SDK を追加します。
    Maven を使用して、Maven 依存関係として Image Search SDK をインポートします。

    1. <dependency>
    2. <groupId>com.aliyun</groupId>
    3. <artifactId>aliyun-java-sdk-imagesearch</artifactId>
    4. <version>1.0.4</version>
    5. </dependency>
    6. <dependency>
    7. <groupId>com.aliyun</groupId>
    8. <artifactId>aliyun-java-sdk-core</artifactId>
    9. <version>3.2.8</version>
    10. </dependency>

クライアントの作成

  1. Image Search にエンドポイントを追加します。

    この例では、中国 (上海) リージョンの Image Search インスタンスにエンドポイントを追加しています。

    1. DefaultProfile.addEndpoint("cn-shanghai", "cn-shanghai", "ImageSearch", "imagesearch.cn-shanghai.aliyuncs.com");
  2. プロファイルを作成します。

    profile という名前の IClientProfile のインスタンスを作成します。このオブジェクトには、Access Key ID、Access Key Secret、リージョンなどのデータが含まれています。

    1. IClientProfile profile = DefaultProfile.getProfile("cn-shanghai", ak, aks);
  3. クライアントを作成します。

    IClientProfile クラスを使用して IAcsClient オブジェクトを作成します。この IAcsClient オブジェクトを使用して、レスポンスを受信します。

    1. IAcsClient client = new DefaultAcsClient(profile);

画像の追加

商品画像検索インスタンスの場合、カテゴリ ID は必須ではありません。一般画像検索インスタンスの場合、カテゴリ ID は不要です。

  1. AddItemRequest request = new AddItemRequest();
  2. request.setInstanceName("testinstance");
  3. request.setCatId("0");
  4. request.setItemId("1000");
  5. request.setCustContent("{\"key\":\"value\"}");
  6. String dressPicPath = "./resources/dress.jpg";
  7. String clothesPicPath = "./resources/clothes.jpg";
  8. // The image content is input by using byte stream. The key represents the image name and the value represents the image content.
  9. request.addPicture("dress", getBytes(dressPicPath));
  10. request.addPicture("clothes", getBytes(clothesPicPath));
  11. // Use the body structure specified in the Image Search API to build the proceeding fields. If the request is successful, the system returns true. If the request is failed, the system returns false.
  12. if (!request.buildPostContent()) {
  13. System.out.println("build post content failed.");
  14. return;
  15. }
  16. AddItemResponse response = null;
  17. try {
  18. response = client.getAcsResponse(request);
  19. System.out.println(response.getSuccess());
  20. System.out.println(response.getRequestId());
  21. System.out.println(response.getCode());
  22. System.out.println(response.getMessage());
  23. } catch (ServerException e) { // An exception occurs when a server error occurs.
  24. e.printStackTrace();
  25. } catch (ClientException e) { // An exception occurs when a client error occurs, such as invalid parameters or unavailable instances.
  26. e.printStackTrace();
  27. }

画像の検索

商品画像検索の場合、カテゴリ ID を指定できます。指定したカテゴリに属する商品にのみ検索が実行されます。カテゴリ ID を指定しないと、システムによってカテゴリが決定されます。一般画像検索の場合、カテゴリ ID は不要です。

  1. SearchItemRequest request = new SearchItemRequest();
  2. request.setCatId("0");
  3. request.setInstanceName("testintance");
  4. request.setNum(10);
  5. request.setStart(0);
  6. String filePath = "./resources/dress.jpg";
  7. byte[] bytes = getBytes(filePath);
  8. request.setSearchPicture(bytes);
  9. if (!request.buildPostContent()) {
  10. System.out.println("build post content failed.");
  11. return;
  12. }
  13. SearchItemResponse response = null;
  14. try {
  15. response = client.getAcsResponse(request);
  16. System.out.println(response.getSuccess());
  17. System.out.println(response.getRequestId());
  18. System.out.println(response.getCode());
  19. System.out.println(response.getMessage());
  20. System.out.println(JSONObject.toJSONString(response.getHead()));
  21. System.out.println(JSONObject.toJSONString(response.getPicInfo()));
  22. System.out.println(JSONObject.toJSONString(response.getAuctions()));
  23. } catch (ServerException e) {
  24. e.printStackTrace();
  25. } catch (ClientException e) {
  26. e.printStackTrace();
  27. }

画像の削除

  1. DeleteItemRequest request = new DeleteItemRequest();
  2. request.setInstanceName("testinstance");
  3. request.setItemId("1000");
  4. request.addPicture("shoes1.jpg");
  5. request.addPicture("shoes2.jpg");
  6. if (!request.buildPostContent()) {
  7. System.out.println("build post content failed.");
  8. return;
  9. }
  10. DeleteItemResponse response = null;
  11. try {
  12. response = client.getAcsResponse(request);
  13. System.out.println(response.getSuccess());
  14. System.out.println(response.getRequestId());
  15. System.out.println(response.getCode());
  16. System.out.println(response.getMessage());
  17. } catch (ServerException e) {
  18. e.printStackTrace();
  19. } catch (ClientException e) {
  20. e.printStackTrace();
  21. }