全部产品
云市场

使用示例

更新时间:2018-07-11 16:40:34

示例下载

准备工作

  1. 获取用户 AccessKeyId 和秘钥(secret)
    用户可以先登录 图像搜索 系统,在登录完成后,单击 ACCESSKEY管理 可以查看您的 Access Key ID(AccessKeyId)和 Access Key Secret(secret)。也可以在阿里云官网,选择 用户中心 > 我的服务 > 安全验证 即可到 ACCESSKEY 管理中心。

  2. 将 SDK添加到项目中
    引入 ImageSearch SDK 依赖,通过 maven 二方库依赖的方式将 ImageSearch 的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>

创建client

  1. 设置图像搜索服务访问的 EndPoint,假定实例是在上海区域。
    1. DefaultProfile.addEndpoint("cn-shanghai", "cn-shanghai", "ImageSearch", "imagesearch.cn-shanghai.aliyuncs.com");
  2. 创建 Profile。生成 IClientProfile 的对象 profile,该对象存放 AccessKeyID 和 AccessKeySecret 和地域信息。
    1. IClientProfile profile = DefaultProfile.getProfile("cn-shanghai", ak, aks);
  3. 创建 Client。从 IClientProfile 类中再生成 IAcsClient 的对象 client,后续获得 response 都需要从 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. // 以字节流的方式读取图片内容, key 为图片名称,value 为图片内容
  9. request.addPicture("dress", getBytes(dressPicPath));
  10. request.addPicture("clothes", getBytes(clothesPicPath));
  11. // 将上述设置的相关字段 build 成 API 接口中指定的 Body 格式,成功返回 true,失败返回 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) { // 服务端有问题时,会抛出此异常
  24. e.printStackTrace();
  25. } catch (ClientException e) { // Client 端有问题时,会抛出此异常,包括参数无效,或者实例不可用等情况
  26. e.printStackTrace();
  27. }

查询图片

说明:查询图片时,对于商品图像搜索,用户可以选择指定或者不指定类目 Id,指定了则会从用户指定的类目 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. }