本文介绍了如何使用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();
}
向自定义图库中添加图片
您可以使用以下代码向自定义图库中添加图片。添加图片的过程包括:
- 获取图片上传凭证。
- 上传图片到图片空间。
- 提交上传后的库信息、图片路径信息到服务器。
// 获取上传凭证。
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();
}