全部产品
云市场

Java SDK

更新时间:2020-04-03 16:52:30

接口列表

接口名称 接口说明
Add 增加图片
SearchImageByPic 使用图片进行搜索
SearchImageByName 指定名称,使用已入库的图片进行搜索
Delete 删除图片

SDK使用示例下载

Java SDK使用示例,点击下载

准备工作

  1. 在安装和使用阿里云SDK前,确保您已经注册阿里云账号并生成访问密钥(AccessKey)。详情参考创建AccessKey

  2. 将 SDK添加到项目中
    引入 ImageSearch SDK 依赖,通过 Maven 二方库依赖的方式将 ImageSearch 的SDK加入到自己的项目中。

  1. <dependency>
  2. <groupId>com.aliyun</groupId>
  3. <artifactId>imagesearch</artifactId>
  4. <version>3.0.1</version>
  5. </dependency>

代码示例

Add接口

代码示例
  1. import com.aliyun.imagesearch.Client;
  2. import com.aliyun.imagesearch.models.AddImageAdvanceRequest;
  3. import com.aliyun.imagesearch.models.AddImageResponse;
  4. import com.aliyun.imagesearch.models.Config;
  5. import com.aliyun.tea.TeaException;
  6. import com.aliyun.teautil.models.RuntimeOptions;
  7. import java.io.FileInputStream;
  8. import java.io.InputStream;
  9. public class Add {
  10. public static void main(String[] args) throws Exception {
  11. Config authConfig = new Config();
  12. authConfig.accessKeyId = "XXXXXX";
  13. authConfig.accessKeySecret = "XXXXXXXXX";
  14. authConfig.type = "access_key";
  15. authConfig.endpoint = "imagesearch.cn-shanghai.aliyuncs.com";
  16. authConfig.regionId = "cn-shanghai";
  17. Client client = new Client(authConfig);
  18. AddImageAdvanceRequest request = new AddImageAdvanceRequest();
  19. // 必填,图像搜索实例名称。
  20. request.instanceName = "XXXXXXXXXXX";
  21. // 必填,商品id,最多支持 512个字符。
  22. // 一个商品可有多张图片。
  23. request.productId = "test";
  24. // 必填,图片名称,最多支持 512个字符。
  25. // 1. ProductId + PicName唯一确定一张图片。
  26. // 2. 如果多次添加图片具有相同的ProductId + PicName,以最后一次添加为准,前面添加的的图片将被覆盖。
  27. request.picName = "1000";
  28. // 选填,图片类目。
  29. // 1. 对于商品搜索:若设置类目,则以设置的为准;若不设置类目,将由系统进行类目预测,预测的类目结果可在Response中获取 。
  30. // 2. 对于布料、商标、通用搜索:不论是否设置类目,系统会将类目设置为88888888。
  31. request.categoryId = 3;
  32. // 选填,用户自定义的内容,最多支持 4096个字符。
  33. // 查询时会返回该字段。例如可添加图片的描述等文本。
  34. request.customContent = "this is a simple test";
  35. // 选填,整数类型属性,可用于查询时过滤,查询时会返回该字段。
  36. // 例如不同的站点的图片/不同用户的图片,可以设置不同的IntAttr,查询时通过过滤来达到隔离的目的
  37. request.intAttr = 56;
  38. // 选填,字符串类型属性,最多支持 128个字符。可用于查询时过滤,查询时会返回该字段。
  39. request.strAttr = "test";
  40. // 选填,是否需要进行主体识别,默认为true。
  41. // 1.为true时,由系统进行主体识别,以识别的主体进行搜索,主体识别结果可在Response中获取。
  42. // 2. 为false时,则不进行主体识别,以整张图进行搜索。
  43. // 3.对于布料图片搜索,此参数会被忽略,系统会以整张图进行搜索。
  44. request.crop = true;
  45. // 选填,图片的主体区域,格式为 x1,x2,y1,y2, 其中 x1,y1 是左上角的点,x2,y2是右下角的点。
  46. // 若用户设置了Region,则不论Crop参数为何值,都将以用户输入Region进行搜索。
  47. // 对于布料图片搜索,此参数会被忽略,系统会以整张图进行搜索。
  48. request.region = "167,467,221,407";
  49. RuntimeOptions runtimeOptions = new RuntimeOptions();
  50. String picName = "D:/123.jpg";
  51. InputStream inputStream = new FileInputStream(picName);
  52. // 图片内容,最多支持 2MB大小图片以及5s的传输等待时间。当前仅支持jpg和png格式图片;
  53. // 对于商品、商标、通用图片搜索,图片长和宽的像素必须都大于等于200,并且小于等于1024;
  54. // 对于布料搜索,图片长和宽的像素必须都大于等于448,并且小于等于1024;
  55. // 图像中不能带有旋转信息
  56. request.picContentObject = inputStream;
  57. try {
  58. AddImageResponse response = client.addImageAdvance(request,runtimeOptions);
  59. System.out.println("success: " + response.success + ". message: " + response.message
  60. + ". categoryId: " + response.picInfo.categoryId + ". region:" + response.picInfo.region
  61. + ". requestId: " + response.requestId);
  62. } catch (TeaException e) {
  63. System.out.println(e.getCode());
  64. System.out.println(e.getData());
  65. System.out.println(e.getMessage());
  66. e.printStackTrace();
  67. }
  68. }
  69. }
返回结果示例
  1. success: true. message: success.
  2. categoryId: 3. region:167,467,221,407.
  3. requestId: 52EC4508-5BC0-4FA0-A85E-B2AD2F3B1EB1

SearchImageByPic接口

代码示例
  1. import com.aliyun.imagesearch.Client;
  2. import com.aliyun.imagesearch.models.Config;
  3. import com.aliyun.imagesearch.models.SearchImageByPicAdvanceRequest;
  4. import com.aliyun.imagesearch.models.SearchImageByPicResponse;
  5. import com.aliyun.tea.TeaException;
  6. import com.aliyun.teautil.models.RuntimeOptions;
  7. import java.io.FileInputStream;
  8. import java.io.InputStream;
  9. import java.util.List;
  10. public class SearchImageByPic {
  11. public static void main(String[] args) throws Exception {
  12. Config authConfig = new Config();
  13. authConfig.accessKeyId = "XXXXXXXX";
  14. authConfig.accessKeySecret = "XXXXXXXXXX";
  15. authConfig.type = "access_key";
  16. authConfig.endpoint = "imagesearch.cn-shanghai.aliyuncs.com";
  17. authConfig.regionId = "cn-shanghai";
  18. Client client = new Client(authConfig);
  19. SearchImageByPicAdvanceRequest request = new SearchImageByPicAdvanceRequest();
  20. // 必填,图像搜索实例名称。
  21. request.instanceName = "XXXXXXXXX";
  22. // 选填,商品类目。
  23. // 1. 对于商品搜索:若设置类目,则以设置的为准;若不设置类目,将由系统进行类目预测,预测的类目结果可在Response中获取 。
  24. // 2. 对于布料、商标、通用搜索:不论是否设置类目,系统会将类目设置为88888888。
  25. request.categoryId = 3;
  26. // 选填,返回结果的数目。取值范围:1-100。默认值:10。
  27. request.num = 10;
  28. // 选填,返回结果的起始位置。取值范围:0-499。默认值:0。
  29. request.start = 0;
  30. // 选填,是否需要进行主体识别,默认为true。
  31. // 1.为true时,由系统进行主体识别,以识别的主体进行搜索,主体识别结果可在Response中获取。
  32. // 2. 为false时,则不进行主体识别,以整张图进行搜索。
  33. // 3.对于布料图片搜索,此参数会被忽略,系统会以整张图进行搜索。
  34. request.crop = true;
  35. // 选填,图片的主体区域,格式为 x1,x2,y1,y2, 其中 x1,y1 是左上角的点,x2,y2是右下角的点。
  36. // 若用户设置了Region,则不论Crop参数为何值,都将以用户输入Region进行搜索。
  37. // 3.对于布料图片搜索,此参数会被忽略,系统会以整张图进行搜索。
  38. request.region="167,467,221,407";
  39. // 选填,过滤条件
  40. // int_attr支持的操作符有>、>=、<、<=、=,str_attr支持的操作符有=和!=,多个条件之支持AND和OR进行连接。
  41. // 示例:
  42. // 1. 根据IntAttr过滤结果,int_attr>=100
  43. // 2. 根据StrAttr过滤结果,str_attr!="value1"
  44. // 3. 根据IntAttr和StrAttr联合过滤结果,int_attr=1000 AND str_attr="value1"
  45. request.filter="int_attr=56 AND str_attr=\"test\"";
  46. InputStream inputStream = new FileInputStream("D:/123.jpg");
  47. // 图片内容,最多支持 2MB大小图片以及5s的传输等待时间。当前仅支持jpg和png格式图片;
  48. // 对于商品、商标、通用图片搜索,图片长和宽的像素必须都大于等于200,并且小于等于1024;
  49. // 对于布料搜索,图片长和宽的像素必须都大于等于448,并且小于等于1024;
  50. // 图像中不能带有旋转信息
  51. request.picContentObject = inputStream;
  52. request.num = 10;
  53. request.start = 0;
  54. RuntimeOptions runtimeObject = new RuntimeOptions();
  55. try {
  56. SearchImageByPicResponse response = client.searchImageByPicAdvance(request, runtimeObject);
  57. System.out.println(response.requestId);
  58. System.out.println(response.picInfo.categoryId);
  59. System.out.println(response.picInfo.region);
  60. // SearchImageByPicResponse.SearchImageByPicResponseAuctions[] auctions = response.auctions;
  61. List<SearchImageByPicResponse.SearchImageByPicResponseAuctions> auctions = response.auctions;
  62. for(SearchImageByPicResponse.SearchImageByPicResponseAuctions auction:auctions) {
  63. System.out.println(auction.categoryId + " " + auction.picName + " " + auction.productId + " " + auction.customContent + " " + auction.sortExprValues + " " + auction.strAttr + " " + auction.intAttr);
  64. }
  65. } catch (TeaException e) {
  66. System.out.println(e.getCode());
  67. System.out.println(e.getData());
  68. System.out.println(e.getMessage());
  69. e.printStackTrace();
  70. }
  71. }
  72. }
返回结果示例
  1. 09BE019A-AE3D-4D22-99C9-10533D8AC631
  2. 3
  3. 167,467,221,407
  4. 3 1000 test this is a simple test 5.37633353624177e+24;0 test 56

SearchImageByName接口

代码示例
  1. import com.aliyun.imagesearch.Client;
  2. import com.aliyun.imagesearch.models.Config;
  3. import com.aliyun.imagesearch.models.SearchImageByNameRequest;
  4. import com.aliyun.imagesearch.models.SearchImageByNameResponse;
  5. import com.aliyun.tea.TeaException;
  6. import com.aliyun.teautil.models.RuntimeOptions;
  7. import java.util.List;
  8. public class SearchImageByName{
  9. public static void main(String[] args) throws Exception {
  10. //配置
  11. Config authConfig = new Config();
  12. authConfig.accessKeyId = "XXXXXX";
  13. authConfig.accessKeySecret = "XXXXXXXXX";
  14. authConfig.type = "access_key";
  15. authConfig.endpoint = "imagesearch.cn-shanghai.aliyuncs.com";
  16. authConfig.regionId = "cn-shanghai";
  17. Client client = new Client(authConfig);
  18. SearchImageByNameRequest request = new SearchImageByNameRequest();
  19. // 必填,图像搜索实例名称。
  20. request.instanceName = "XXXXXXXXX";
  21. // 必填,商品id,最多支持 512个字符。
  22. // 一个商品可有多张图片。
  23. request.productId = "test";
  24. // 必填,图片名称,最多支持 512个字符。
  25. // 1. ProductId + PicName唯一确定一张图片。
  26. request.picName = "1000";
  27. // 选填,商品类目。
  28. // 1. 对于商品搜索:若设置类目,则以设置的为准;若不设置类目,将由系统进行类目预测,预测的类目结果可在Response中获取 。
  29. // 2. 对于布料、商标、通用搜索:不论是否设置类目,系统会将类目设置为88888888。
  30. request.categoryId = 3;
  31. // 选填,返回结果的数目。取值范围:1-100。默认值:10。
  32. request.num =10;
  33. // 选填,返回结果的起始位置。取值范围:0-499。默认值:0。
  34. request.start =0;
  35. // 选填,过滤条件
  36. // int_attr支持的操作符有>、>=、<、<=、=,str_attr支持的操作符有=和!=,多个条件之支持AND和OR进行连接。
  37. // 示例:
  38. // 1. 根据IntAttr过滤结果,int_attr>=100
  39. // 2. 根据StrAttr过滤结果,str_attr!="value1"
  40. // 3. 根据IntAttr和StrAttr联合过滤结果,int_attr=1000 AND str_attr="value1"
  41. request.filter = "int_attr=56 AND str_attr =\"test\"";
  42. RuntimeOptions runtimeObject = new RuntimeOptions();
  43. try {
  44. SearchImageByNameResponse response = client.searchImageByName(request, runtimeObject);
  45. System.out.println(response.requestId);
  46. System.out.println(response.picInfo.categoryId);
  47. System.out.println(response.picInfo.region);
  48. List<SearchImageByNameResponse.SearchImageByNameResponseAuctions> auctions = response.auctions;
  49. for(SearchImageByNameResponse.SearchImageByNameResponseAuctions auction:auctions) {
  50. System.out.println(auction.categoryId + " " + auction.picName + " " + auction.productId + " " + auction.customContent + " " + auction.sortExprValues + " " + auction.strAttr + " " + auction.intAttr);
  51. }
  52. } catch (TeaException e) {
  53. System.out.println(e.getCode());
  54. System.out.println(e.getData());
  55. System.out.println(e.getMessage());
  56. e.printStackTrace();
  57. }
  58. }
  59. }
返回结果示例
  1. 8F2441C8-EA05-461B-A4AC-5F5DE25FAC21
  2. 3
  3. null
  4. 3 1000 test this is a simple test 5.37633353624177e+24;0 test 56

Delete接口

代码示例
  1. import com.aliyun.imagesearch.Client;
  2. import com.aliyun.imagesearch.models.Config;
  3. import com.aliyun.imagesearch.models.DeleteImageRequest;
  4. import com.aliyun.imagesearch.models.DeleteImageResponse;
  5. import com.aliyun.tea.TeaException;
  6. import com.aliyun.teautil.models.RuntimeOptions;
  7. public class Delete {
  8. public static void main(String[] args) throws Exception {
  9. Config authConfig = new Config();
  10. authConfig.accessKeyId = "XXXXXXXX";
  11. authConfig.accessKeySecret = "XXXXXXXXXX";
  12. authConfig.type = "access_key";
  13. authConfig.endpoint = "imagesearch.cn-shanghai.aliyuncs.com";
  14. authConfig.regionId = "cn-shanghai";
  15. Client client = new Client(authConfig);
  16. DeleteImageRequest request = new DeleteImageRequest();
  17. // 必填,图像搜索实例名称。
  18. request.instanceName = "XXXXXXXXXXXX";
  19. // 必填,商品id,最多支持 512个字符。
  20. // 一个商品可有多张图片。
  21. request.productId = "test";
  22. // 选填,图片名称。若不指定本参数,则删除ProductId下所有图片;若指定本参数,则删除ProductId+PicName指定的图片。
  23. request.picName = "1000";
  24. RuntimeOptions runtimeOptions = new RuntimeOptions();
  25. try {
  26. DeleteImageResponse response = client.deleteImage(request, runtimeOptions);
  27. System.out.println("requestId: " + response.requestId + ". success: " + response.success + ". message: " + response.message);
  28. } catch (TeaException e) {
  29. System.out.println(e.getCode());
  30. System.out.println(e.getData());
  31. System.out.println(e.getMessage());
  32. e.printStackTrace();
  33. }
  34. }
  35. }
返回结果示例
  1. requestId: 927AE217-90E1-4B48-9413-7508FCB4CE51. success: true. message: success