本文介绍了如何使用Java SDK管理自定义图库。

功能描述

您可以自定义智能鉴黄、暴恐涉政识别、图片或视频广告的图片样本,满足个性化内容管控需求。关于参数的详细信息,请参见创建图库API文档

您需要使用内容安全的API接入地址,调用本SDK接口。关于API接入地址的信息,请参见接入地址(Endpoint)

前提条件

  • 安装Java依赖。关于安装Java依赖的具体操作,请参见安装Java依赖
    说明 请一定按照安装Java依赖页面中的版本安装,否则会导致调用失败。
  • 如果使用本地文件或者二进制文件检测,请下载并在项目工程中引入Extension.Uploader工具类

获取自定义图库列表

您可以使用以下代码获取用户图库列表(包括用户自定义的图库列表和系统回流图库):
DescribeImageLibRequest describeImageLibRequest = new DescribeImageLibRequest();
describeImageLibRequest.setServiceModule("open_api");

try {
     // 获取所有的图库,包括自定义的图库以及回流图库。
     DescribeImageLibResponse describeImageLibResponse = client.getAcsResponse(describeImageLibRequest);
     System.out.println(JSON.toJSONString(describeImageLibResponse));

     List<DescribeImageLibResponse.ImageLib> allLibs = describeImageLibResponse.getImageLibList();
     List<DescribeImageLibResponse.ImageLib> customImageLibs = new ArrayList<DescribeImageLibResponse.ImageLib>();
     for (DescribeImageLibResponse.ImageLib imageLib : allLibs) {
     String source =  imageLib.getSource();
     // 过滤出用户自定义的图库。
     if("MANUAL".equals(source)) {
         customImageLibs.add(imageLib);
        }

      // 过滤出系统回流(反馈)的图库。
      if("FEEDBACK".equals(source)) {
          customImageLibs.add(imageLib);
        }
      }

     System.out.println(JSON.toJSONString(customImageLibs));
} catch (ClientException e) {
            e.printStackTrace();
}

创建自定义图库

您可以使用以下代码创建自定义图库:
说明 请根据您所需要的业务场景设置不同的参数。
CreateImageLibRequest  createImageLibRequest = new CreateImageLibRequest();
createImageLibRequest.setServiceModule("open_api");
createImageLibRequest.setName("鉴黄黑库");
createImageLibRequest.setScene("PORN");
createImageLibRequest.setCategory("BLACK");

try {
    CreateImageLibResponse createImageLibResponse = client.getAcsResponse(createImageLibRequest);
    // 请求ID,无异常则表示创建成功。
    String requestId = createImageLibResponse.getRequestId();
    System.out.println(JSON.toJSONString(createImageLibResponse));
  } catch (ClientException e) {
      e.printStackTrace();
  }

修改自定义图库

您可以使用以下代码修改自定义图库的名称及其适用的业务场景(BizType):
UpdateImageLibRequest updateImageLibRequest = new UpdateImageLibRequest();
// 图库ID。
updateImageLibRequest.setId(12345);
updateImageLibRequest.setName("鉴黄黑库改名");
updateImageLibRequest.setBizTypes(JSON.toJSONString(Arrays.asList("comment")));
updateImageLibRequest.setCategory("WHITE");
updateImageLibRequest.setScene("PORN");
try {
    UpdateImageLibResponse updateImageLibResponse = client.getAcsResponse(updateImageLibRequest);
    // 请求ID,无异常则表示修改成功。
    String requestId = updateImageLibResponse.getRequestId();
    System.out.println(JSON.toJSONString(updateImageLibResponse));
} catch (ClientException e) {
    e.printStackTrace();
}

删除自定义图库

您可以使用以下代码删除自定义图库:
说明 删除自定义图库时,图库下的所有图片也将被删除。
DeleteImageLibRequest  deleteImageLibRequest = new DeleteImageLibRequest();
// 图库ID。
deleteImageLibRequest.setId(12345);
try {
     DeleteImageLibResponse deleteImageLibResponse = client.getAcsResponse(deleteImageLibRequest);
     // 请求ID,无异常则表示删除成功。
     String requestId = deleteImageLibResponse.getRequestId();
     System.out.println(JSON.toJSONString(deleteImageLibResponse));
} catch (ClientException e) {
    e.printStackTrace();
}

获取自定义图库图片列表

您可以使用以下代码获取自定义图库中所有已添加的图片列表:
DescribeImageFromLibRequest describeImageFromLibRequest = new DescribeImageFromLibRequest();
describeImageFromLibRequest.setImageLibId(1519);
describeImageFromLibRequest.setPageSize(20);
describeImageFromLibRequest.setCurrentPage(1);
try {
    DescribeImageFromLibResponse describeImageFromLibResponse = client.getAcsResponse(describeImageFromLibRequest);
    // 返回图片数
    describeImageFromLibResponse.getTotalCount();
    // 返回的当前分页
    describeImageFromLibResponse.getCurrentPage();
    // 返回的分页大小,即每个分页显示的图片数量
    describeImageFromLibResponse.getPageSize();
    // 图片列表
    for (DescribeImageFromLibResponse.ImageFromLib imageFromLib : describeImageFromLibResponse.getImageFromLibList()) {
         // 图片主键ID
         imageFromLib.getId();
         // 图片URL地址
         imageFromLib.getImage();
         // 图片的缩略图URL地址
         imageFromLib.getThumbnail();
     }
     System.out.println(JSON.toJSONString(describeImageFromLibResponse));
} catch (ClientException e) {
    e.printStackTrace();
}

向自定义图库中添加图片

您可以使用以下代码向自定义图库中添加图片。添加图片的过程包括:
  1. 获取图片上传凭证。
  2. 上传图片到图片空间。
  3. 提交上传后的库信息、图片路径信息到服务器。
 // 获取上传凭证。
DescribeUploadInfoRequest describeUploadInfoRequest = new DescribeUploadInfoRequest();
describeUploadInfoRequest.setBiz("customImageLib");
DescribeUploadInfoResponse describeUploadInfoResponse = null;
try {
     describeUploadInfoResponse = client.getAcsResponse(describeUploadInfoRequest);
     System.out.println(JSON.toJSONString(describeUploadInfoResponse));
} catch (ClientException e) {
            e.printStackTrace();
}

// 上传图片。
CustomLibUploader customLibUploader = new CustomLibUploader();
String object = null;
try {
    object = customLibUploader.uploadFile(describeUploadInfoResponse.getHost(), describeUploadInfoResponse.getFolder(), describeUploadInfoResponse.getAccessid(),
             describeUploadInfoResponse.getPolicy(), describeUploadInfoResponse.getSignature(),
             "/Users/liuhai.lh/Desktop/a.jpg");
} catch (Exception e) {
    e.printStackTrace();
}

if(org.apache.commons.lang.StringUtils.isNotBlank(object)){
    UploadImageToLibRequest imageToLibRequest = new UploadImageToLibRequest();
    imageToLibRequest.setImageLibId(1519);
    imageToLibRequest.setImages(JSON.toJSONString(Arrays.asList(object)));

    try {
        UploadImageToLibResponse uploadImageToLibResponse = client.getAcsResponse(imageToLibRequest);
        // 请求ID,无异常则表示添加成功。
        String requestId = uploadImageToLibResponse.getRequestId();
        System.out.println(JSON.toJSONString(uploadImageToLibResponse));
    } catch (ClientException e) {
        e.printStackTrace();
    }
}

删除自定义图片

您可以使用以下代码删除自定义图库中的多张自定义图片:
DeleteImageFromLibRequest deleteImageFromLibRequest = new DeleteImageFromLibRequest();
deleteImageFromLibRequest.setIds(JSON.toJSONString(Arrays.asList(669310)));
try {
    DeleteImageFromLibResponse deleteImageFromLibResponse = client.getAcsResponse(deleteImageFromLibRequest);
    // 请求ID,无异常则表示删除成功。
    String requestId = uploadImageToLibResponse.getRequestId();
    System.out.println(JSON.toJSONString(deleteImageFromLibResponse));
} catch (ClientException e) {
    e.printStackTrace();
}