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

功能描述

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

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

前提条件

  • 安装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);
            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);
            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);
            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);
            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);
                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);
    System.out.println(JSON.toJSONString(deleteImageFromLibResponse));
} catch (ClientException e) {
    e.printStackTrace();
}