AIGC 图片元数据标识

最近更新时间:2025-11-17 10:51:42

我的收藏

简介

本文档提供关于数据万象图片 AIGC 元数据标识的相关 API 概览以及 SDK 示例代码。
注意:
该功能需要 COS Java SDK v5.6.255及以上版本。旧版本 SDK 该接口可能未覆盖或缺少更新参数,使用时建议升级到 最新版本
API
操作描述
AIGC 图片元数据中包含了内容生产平台标识、内容传播平台标识等信息,可以通过此方式添加图片中的 AIGC 元数据标识信息
AIGC 图片元数据中包含了内容生产平台标识、内容传播平台标识等信息,可以通过此方式获取图片中的 AIGC 元数据标识信息

添加 AIGC 图片元数据标识

请求示例

上传时处理

public static void persistenceImage(COSClient cosClient) {
// bucket 名需包含 appid
// api 请参考 https://cloud.tencent.com/document/product/436/54050
String bucketName = "examplebucket-1250000000";

String key = "test.jpg";
File localFile = new File("E://test.jpg");
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
PicOperations picOperations = new PicOperations();
picOperations.setIsPicInfo(1);
List<PicOperations.Rule> ruleList = new LinkedList<>();
PicOperations.Rule rule1 = new PicOperations.Rule();
rule1.setBucket(bucketName);
rule1.setFileId("test-1.jpg");
// 构建 AIGC 元数据规则
// 注意:所有参数值需要进行 Base64编码,Label 参数是必填的,其他参数为可选
String label = Base64.getUrlEncoder().withoutPadding().encodeToString("label".getBytes(StandardCharsets.UTF_8));
String contentProducer = Base64.getUrlEncoder().withoutPadding().encodeToString("content_producer".getBytes(StandardCharsets.UTF_8));
String produceId = Base64.getUrlEncoder().withoutPadding().encodeToString("produce_id".getBytes(StandardCharsets.UTF_8));
String reservedCode1 = Base64.getUrlEncoder().withoutPadding().encodeToString("reserved_code1".getBytes(StandardCharsets.UTF_8));
String reservedCode2 = Base64.getUrlEncoder().withoutPadding().encodeToString("reserved_code2".getBytes(StandardCharsets.UTF_8));
String propagateId = Base64.getUrlEncoder().withoutPadding().encodeToString("propagate_id".getBytes(StandardCharsets.UTF_8));
String contentPropagator = Base64.getUrlEncoder().withoutPadding().encodeToString("content_propagator".getBytes(StandardCharsets.UTF_8));

String rule = "imageMogr2/AIGCMetadata/Label/" + label
+ "/ContentProducer/" + contentProducer
+ "/ProduceID/" + produceId
+ "/ReservedCode1/" + reservedCode1
+ "/ReservedCode2/" + reservedCode2
+ "/PropagateID/" + propagateId
+ "/ContentPropagator/" + contentPropagator;
rule1.setRule(rule);
ruleList.add(rule1);
picOperations.setRules(ruleList);
putObjectRequest.setPicOperations(picOperations);
try {
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
CIUploadResult ciUploadResult = putObjectResult.getCiUploadResult();
System.out.println(putObjectResult.getRequestId());
for(CIObject ciObject:ciUploadResult.getProcessResults().getObjectList()) {
System.out.println(ciObject.getLocation());
System.out.println(ciObject.getEtag());
System.out.println(ciObject.getAigcMetadata());
}
} catch (CosServiceException e) {
e.printStackTrace();
} catch (CosClientException e) {
e.printStackTrace();
}
}

云上图片处理

public static void persistenceImagePostWithAigcMetadata(COSClient cosClient) {
String bucketName = "examplebucket-1250000000";
String key = "test.jpg";
ImageProcessRequest imageReq = new ImageProcessRequest(bucketName, key);

PicOperations picOperations = new PicOperations();
picOperations.setIsPicInfo(1);
List<PicOperations.Rule> ruleList = new LinkedList<>();
PicOperations.Rule rule1 = new PicOperations.Rule();
rule1.setBucket(bucketName);
rule1.setFileId("test-1.jpg");

// 手动构建 AIGC 元数据规则
// 注意:所有参数值需要进行 Base64编码,Label 参数是必填的,其他参数为可选
String label = Base64.getUrlEncoder().withoutPadding().encodeToString("label".getBytes(StandardCharsets.UTF_8));
String contentProducer = Base64.getUrlEncoder().withoutPadding().encodeToString("content_producer".getBytes(StandardCharsets.UTF_8));
String produceId = Base64.getUrlEncoder().withoutPadding().encodeToString("produce_id".getBytes(StandardCharsets.UTF_8));
String reservedCode1 = Base64.getUrlEncoder().withoutPadding().encodeToString("reserved_code1".getBytes(StandardCharsets.UTF_8));
String reservedCode2 = Base64.getUrlEncoder().withoutPadding().encodeToString("reserved_code2".getBytes(StandardCharsets.UTF_8));
String propagateId = Base64.getUrlEncoder().withoutPadding().encodeToString("propagate_id".getBytes(StandardCharsets.UTF_8));
String contentPropagator = Base64.getUrlEncoder().withoutPadding().encodeToString("content_propagator".getBytes(StandardCharsets.UTF_8));

String rule = "imageMogr2/AIGCMetadata/Label/" + label
+ "/ContentProducer/" + contentProducer
+ "/ProduceID/" + produceId
+ "/ReservedCode1/" + reservedCode1
+ "/ReservedCode2/" + reservedCode2
+ "/PropagateID/" + propagateId
+ "/ContentPropagator/" + contentPropagator;

rule1.setRule(rule);
ruleList.add(rule1);
picOperations.setRules(ruleList);

imageReq.setPicOperations(picOperations);

try {
CIUploadResult ciUploadResult = cosClient.processImage(imageReq);
System.out.println(ciUploadResult.getOriginalInfo().getEtag());
for(CIObject ciObject:ciUploadResult.getProcessResults().getObjectList()) {
System.out.println(ciObject.getAigcMetadata());
}
} catch (CosServiceException e) {
e.printStackTrace();
} catch (CosClientException e) {
e.printStackTrace();
}
}

参数说明

参数
含义
类型
是否必选
bucketName
Bucket 的命名规则为 BucketName-APPID,详情请参见 存储桶概述
String
key
对象文件名,例如 folder/sample.jpg
String
rule
具体的 AIGC 元数据标识的参数内容,详情参见 AIGC 参数详情
String

返回结果说明

成功:返回 UploadResult 对象响应信息。
失败:发生错误(如 Bucket 不存在),抛出异常 CosClientException 或者 CosServiceException。详情请参见 异常处理

查询 AIGC 图片元数据标识

方法原型

public AIGCMetadataResponse getImageAIGCMetadata(String bucketName, String key)

请求示例

public static void getImageAIGCMetadata(COSClient client) {
String bucketName = "demoBuck-1251704708";
String key = "test.jpg";

AIGCMetadataResponse response = client.getImageAIGCMetadata(bucketName, key);

System.out.println(response);
}

参数说明

参数
含义
类型
是否必选
bucketName
Bucket 的命名规则为 BucketName-APPID,详情请参见 存储桶概述
String
key
对象文件名,例如 folder/sample.jpg
String

返回结果说明

成功:返回 AIGCMetadataResponse 对象响应信息。
失败:发生错误(如 Bucket 不存在),抛出异常 CosClientException 或者 CosServiceException。详情请参见 异常处理