本文介紹了如何使用Java SDK管理自訂圖庫。
功能描述
您可以自訂智能鑒黃、暴恐涉政識別、圖片或視頻廣告的圖片樣本,滿足個人化內容管控需求。關於參數的詳細資料,請參見建立圖庫API文檔。
您需要使用Alibaba Content Security Service的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();
}