全部產品
Search
文件中心

Content Moderation:自訂圖庫

更新時間:Jul 06, 2024

本文介紹了如何使用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();
}

向自訂圖庫中添加圖片

您可以使用以下代碼向自訂圖庫中添加圖片。添加圖片的過程包括:
  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();
}