diff --git a/ci.go b/ci.go index 13d862e..c32f6e3 100644 --- a/ci.go +++ b/ci.go @@ -2893,3 +2893,7 @@ type ImgTargetRecResult struct { } `xml:"PlateDetailInfo"` } `xml:"PlateDetailInfos"` } + +type AIGCResult struct { + AIGC string `json:"AIGC,omitempty"` +} diff --git a/ci_doc.go b/ci_doc.go index 9746a4d..399de41 100644 --- a/ci_doc.go +++ b/ci_doc.go @@ -20,21 +20,35 @@ type DocProcessJobOutput struct { Object string `xml:"Object,omitempty"` } +type DocWatermark struct { + SrcType string `xml:"SrcType,omitempty"` + Type string `xml:"Type,omitempty"` + Image string `xml:"Image,omitempty"` + Dx string `xml:"Dx,omitempty"` + Dy string `xml:"Dy,omitempty"` +} + type DocProcessJobDocProcess struct { - SrcType string `xml:"SrcType,omitempty"` - TgtType string `xml:"TgtType,omitempty"` - SheetId int `xml:"SheetId,omitempty"` - StartPage int `xml:"StartPage,omitempty"` - EndPage int `xml:"EndPage,omitempty"` - ImageParams string `xml:"ImageParams,omitempty"` - DocPassword string `xml:"DocPassword,omitempty"` - Comments int `xml:"Comments,omitempty"` - PaperDirection int `xml:"PaperDirection,omitempty"` - Quality int `xml:"Quality,omitempty"` - Zoom int `xml:"Zoom,omitempty"` - PaperSize int `xml:"PaperSize,omitempty"` - ImageDpi int `xml:"ImageDpi,omitempty"` - PicPagination int `xml:"PicPagination,omitempty"` + SrcType string `xml:"SrcType,omitempty"` + TgtType string `xml:"TgtType,omitempty"` + SheetId int `xml:"SheetId,omitempty"` + StartPage int `xml:"StartPage,omitempty"` + EndPage int `xml:"EndPage,omitempty"` + ImageParams string `xml:"ImageParams,omitempty"` + DocPassword string `xml:"DocPassword,omitempty"` + Comments int `xml:"Comments,omitempty"` + PaperDirection int `xml:"PaperDirection,omitempty"` + Quality int `xml:"Quality,omitempty"` + Zoom int `xml:"Zoom,omitempty"` + PaperSize int `xml:"PaperSize,omitempty"` + ImageDpi int `xml:"ImageDpi,omitempty"` + PicPagination int `xml:"PicPagination,omitempty"` + DocWatermark *DocWatermark `xml:"DocWatermark,omitempty"` +} + +type WatermarkInfoResult struct { + Size int `xml:"Size,omitempty"` + Etag string `xml:"Etag,omitempty"` } type DocProcessJobDocProcessResult struct { @@ -51,13 +65,27 @@ type DocProcessJobDocProcessResult struct { PicIndex int `xml:"PicIndex,omitempty"` PicNum int `xml:"PicNum,omitempty"` } `xml:"PageInfo,omitempty"` + WatermarkInfo *WatermarkInfoResult `xml:"WatermarkInfo,omitempty"` +} + +type DocWatermarkResult struct { + Size int `xml:"Size,omitempty"` + TotalPageCount int `xml:"TotalPageCount,omitempty"` + Etag string `xml:"Etag,omitempty"` +} + +type DocAIGCMetadata struct { + AIGCMetadata *AIGCMetadata `xml:"AIGCMetadata,omitempty"` } type DocProcessJobOperation struct { - Output *DocProcessJobOutput `xml:"Output,omitempty"` - DocProcess *DocProcessJobDocProcess `xml:"DocProcess,omitempty"` - DocProcessResult *DocProcessJobDocProcessResult `xml:"DocProcessResult,omitempty"` - UserData string `xml:"UserData,omitempty"` + Output *DocProcessJobOutput `xml:"Output,omitempty"` + DocProcess *DocProcessJobDocProcess `xml:"DocProcess,omitempty"` + DocAIGCMetadata *DocAIGCMetadata `xml:"DocAIGCMetadata,omitempty"` + DocWatermark *DocWatermark `xml:"DocWatermark,omitempty"` + DocProcessResult *DocProcessJobDocProcessResult `xml:"DocProcessResult,omitempty"` + DocWatermarkResult *DocWatermarkResult `xml:"DocWatermarkResult,omitempty"` + UserData string `xml:"UserData,omitempty"` } type DocProcessJobDetail struct { diff --git a/ci_media.go b/ci_media.go index 24b2fe0..002f4d3 100644 --- a/ci_media.go +++ b/ci_media.go @@ -2087,6 +2087,7 @@ type NodeOperation struct { TranscodeConfig *struct { FreeTranscode string `xml:"FreeTranscode,omitempty" json:"FreeTranscode,omitempty"` } `xml:"TranscodeConfig,omitempty" json:"TranscodeConfig,omitempty"` + DocAIGCMetadata *DocAIGCMetadata `xml:"DocAIGCMetadata,omitempty"` } // Node TODO @@ -3508,6 +3509,7 @@ type InventoryTriggerJobOperationJobParam struct { ImageInspectResult *ImageInspectResult `xml:"ImageInspectResult,omitempty"` ImageOCR *ImageOCRTemplate `xml:"ImageOCR,omitempty"` Detection *ImageOCRDetection `xml:"Detection,omitempty"` + DocAIGCMetadata *DocAIGCMetadata `xml:"DocAIGCMetadata,omitempty"` } // InventoryTriggerJob TODO diff --git a/example/CI/doc_preview/job.go b/example/CI/doc_preview/job.go index c615dc9..ba2f43d 100644 --- a/example/CI/doc_preview/job.go +++ b/example/CI/doc_preview/job.go @@ -3,6 +3,7 @@ package main import ( "context" "fmt" + "io/ioutil" "net/http" "net/url" "os" @@ -140,8 +141,78 @@ func describeDocJobs() { fmt.Printf("%+v\n", DescribeJobsRes) } +func getAIGC() { + c := getClient() + name := "3.pdf" + opt := &cos.ObjectGetOptions{ + CiProcess: "DocAIGCMetadata", + } + resp, err := c.Object.Get(context.Background(), name, opt) + log_status(err) + bs, _ := ioutil.ReadAll(resp.Body) + resp.Body.Close() + fmt.Printf("%s\n", string(bs)) +} + +func createAIGCDocJob() { + c := getClient() + + createJobOpt := &cos.CreateDocProcessJobsOptions{ + Tag: "DocAIGCMetadata", + Input: &cos.DocProcessJobInput{ + Object: "abc.pdf", + }, + Operation: &cos.DocProcessJobOperation{ + Output: &cos.DocProcessJobOutput{ + Region: "ap-chongqing", + Object: "abc-aigc.pdf", + Bucket: OutputBucket, + }, + DocAIGCMetadata: &cos.DocAIGCMetadata{ + AIGCMetadata: &cos.AIGCMetadata{ + Label: "1", + ContentProducer: "AIGC-Bqwdvi-1584", + ProduceID: "CI-2025-XXXXX-${InputName}", + }, + }, + }, + } + createJobRes, _, err := c.CI.CreateDocProcessJobs(context.Background(), createJobOpt) + log_status(err) + fmt.Printf("%+v\n", createJobRes.JobsDetail) +} + +func createWatermarkDocJob() { + c := getClient() + + createJobOpt := &cos.CreateDocProcessJobsOptions{ + Tag: "DocWatermark", + Input: &cos.DocProcessJobInput{ + Object: "abc.pdf", + }, + Operation: &cos.DocProcessJobOperation{ + Output: &cos.DocProcessJobOutput{ + Region: "ap-chongqing", + Object: "abc-watermark.pdf", + Bucket: OutputBucket, + }, + DocWatermark: &cos.DocWatermark{ + Type: "1", + SrcType: "pdf", + Image: "https://wwj-cq-125000000.cos.ap-chongqing.myqcloud.com/a.png", + Dx: "10", + Dy: "10", + }, + }, + } + createJobRes, _, err := c.CI.CreateDocProcessJobs(context.Background(), createJobOpt) + log_status(err) + fmt.Printf("%+v\n", createJobRes.JobsDetail) +} + func main() { // createDocJob() // describeDocJob() // describeDocJobs() + // getAIGC() } diff --git a/example/CI/image_process/base_process.go b/example/CI/image_process/base_process.go index 42c6253..2458ccd 100644 --- a/example/CI/image_process/base_process.go +++ b/example/CI/image_process/base_process.go @@ -4,6 +4,7 @@ import ( "context" "encoding/base64" "fmt" + "io/ioutil" "net/http" "net/url" "os" @@ -138,7 +139,7 @@ func processWhenCloud(ctx context.Context, rawurl, obj string, pic *cos.PicOpera } // 云上数据处理 -func processWhenCloudWithHeader(ctx context.Context, rawurl, obj string, imageProcessHeader *cos.ImageProcessHeader ) { +func processWhenCloudWithHeader(ctx context.Context, rawurl, obj string, imageProcessHeader *cos.ImageProcessHeader) { u, _ := url.Parse(rawurl) b := &cos.BaseURL{BucketURL: u} c := cos.NewClient(b, &http.Client{ @@ -1086,7 +1087,6 @@ func extractBlindWatermark3() { } } - // 文字水印和AIGC func textWatermarkAndAIGC() { rawurl := "https://test-12500000.cos.ap-chongqing.myqcloud.com" @@ -1120,7 +1120,7 @@ func textWatermarkAndAIGC() { } processWhenUpload(context.Background(), rawurl, obj, filepath, pic) } - + // 云上数据处理 { obj := "pic/deer.jpeg" @@ -1158,6 +1158,36 @@ func textWatermarkAndAIGC() { } +func getAIGC() { + u, _ := url.Parse("https://test-12500000.cos.ap-chongqing.myqcloud.com") + b := &cos.BaseURL{BucketURL: u} + c := cos.NewClient(b, &http.Client{ + Transport: &cos.AuthorizationTransport{ + // 通过环境变量获取密钥 + // 环境变量 SECRETID 表示用户的 SecretId,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi + SecretID: os.Getenv("SECRETID"), + // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi + SecretKey: os.Getenv("SECRETKEY"), + // Debug 模式,把对应 请求头部、请求内容、响应头部、响应内容 输出到标准输出 + Transport: &debug.DebugRequestTransport{ + RequestHeader: true, + RequestBody: true, + ResponseHeader: true, + ResponseBody: false, + }, + }, + }) + name := "pic/textwatermark/textwatermark.jpg" + opt := &cos.ObjectGetOptions{ + CiProcess: "ImageAIGCMetadata", + } + resp, err := c.Object.Get(context.Background(), name, opt) + log_status(err) + bs, _ := ioutil.ReadAll(resp.Body) + resp.Body.Close() + fmt.Printf("%s\n", string(bs)) +} + func main() { // commonProcess() } diff --git a/example/CI/media_process/media_process.go b/example/CI/media_process/media_process.go index 928e3fb..26ab4dc 100644 --- a/example/CI/media_process/media_process.go +++ b/example/CI/media_process/media_process.go @@ -166,5 +166,18 @@ func DescribeCIBuckets() { fmt.Printf("%+v\n", len(res.CIBucketList)) } +func getAIGC() { + c := getClient() + name := "123.mp4" + opt := &cos.ObjectGetOptions{ + CiProcess: "MediaAIGCMetadata", + } + resp, err := c.Object.Get(context.Background(), name, opt) + log_status(err) + bs, _ := ioutil.ReadAll(resp.Body) + resp.Body.Close() + fmt.Printf("%s\n", string(bs)) +} + func main() { }