功能描述
腾讯云数据万象通过 AIPortraitMatting 接口检测图片中的人像主体信息,智能分割图像背景,生成只包含人像主体信息的图片,支持持久化、云上处理及下载时处理。
服务开通
使用该功能需提前开通数据万象,并绑定存储桶。详情请参见 绑定存储桶。
使用该功能需提前通过控制台或接口开通 AI 内容识别服务 。详情请参见 开通 AI 内容识别服务。
授权说明
下载时处理:授权策略中 action 设置为
cos:GetObject
、ci:CreateAIPortraitMattingJob
。上传时处理:授权策略中 action 设置为
cos:PutObject
、ci:CreateAIPortraitMattingJob
。云上数据处理:授权策略中 action 设置为
cos:GetObject
、cos:PutObject
、ci:CreateAIPortraitMattingJob
(注意 GetObject 对应的 resource 为源文件,PutObject 对应的 resource 为转存的文件)。使用限制
方式一:下载时处理
请求
原图存储在COS:
GET /<ObjectKey>?ci-process=AIPortraitMatting HTTP/1.1Host: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: <GMT Date>Authorization: <Auth String>
原图来自其他链接:
GET /<ObjectKey>?ci-process=AIPortraitMatting&detect-url=<detect-url> HTTP/1.1Host: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: <GMT Date>Authorization: <Auth String>
处理参数说明
操作名称:AIPortraitMatting。
参数 | 含义 | 类型 | 是否必选 |
ObjectKey | 对象文件名,例如:folder/document.jpg。 | String | 是 |
ci-process | 数据万象处理能力,人像抠图固定为 AIPortraitMatting。 | String | 是 |
detect-url | 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey。
detect-url 示例: http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg 。 | String | 否 |
center-layout | 抠图主体居中显示;值为1时居中显示,值为0不做处理,默认为0 | Integer | 否 |
padding-layout | 将处理后的图片四边进行留白,形式为 padding-layout=<dx> x <dy>,左右两边各进行 dx 像素的留白,上下两边各进行 dy 像素的留白,例如:padding-layout=20x10。 默认不进行留白操作,dx、dy最大值为1000像素。 | String | 否 |
响应
HTTP/1.1 200 OKContent-Type: image/pngContent-Length: 98645Date: Tue, 23 Apr 2022 09:06:16 GMTServer: tencent-ciStatus: 200 OKx-cos-request-id: NWFjMzQ0MDZfOTBmYTUwXzZkZV8z****[pic-content]
处理后的图片直接返回至响应体。
方式二:上传时处理
请求语法
PUT /<ObjectKey> HTTP/1.1Host: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: GMT DateAuthorization: Auth StringPic-Operations: <PicOperations>
说明:
请求
请求头
头部名称 | 描述 | 类型 |
Pic-Operations | 对图片进行操作的参数 | String |
Pic-Operations 为 json 格式的字符串,具体参数如下:
参数名称 | 类型 | 是否必选 | 描述 |
is_pic_info | Int | 否 | 是否返回原图信息,0不返回原图信息,1返回原图信息,默认为0 |
rules | Array | 否 | 处理规则,内容识别仅支持一条规则 |
rules(json 数组)中每一项具体参数如下:
参数名称 | 类型 | 是否必选 | 描述 |
bucket | String | 否 | 存储结果的目标存储桶名称,格式为 BucketName-AppId,如果不指定的话默认保存到当前存储桶 |
fileid | String | 是 | 处理后文件的保存路径及名称。名称规则说明: 例如源文件的路径及文件名为:/p1/test1.jpg 以/开头为绝对路径,例如 fileid 值为 /p2/test2.jpg 时,表示在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件 不以/开头为相对路径,例如 fileid 值为 p2/test2.jpg 时,表示在 p1 文件夹中新建了一个 p2 文件夹,然后在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件 注意:请不要以/结尾,否则会产生空文件名 如希望修复后的图片覆盖原图,请将fileid字段设置为 |
rule | String | 是 | 固定为:ci-process=AIPortraitMatting,其他处理参数参照下载时 |
请求体
该请求body内容为待裁剪图片原图
[Image Content]
响应
响应头
响应体
该响应体返回content-type为 application/xml 数据,具体的数据内容如下:
节点名称(关键字) | 父节点 | 描述 | 类型 |
UploadResult | 无 | 请求结果 | Container |
UploadResult 的内容:
节点名称(关键字) | 父节点 | 描述 | 类型 |
OriginalInfo | UploadResult | 原图信息 | Container |
ProcessResults | UploadResult | 请求处理结果 | Container |
OriginalInfo 节点内容:
节点名称 | 父节点 | 描述 | 类型 |
Key | OriginalInfo | 原图文件名 | String |
Location | OriginalInfo | 图片路径 | String |
Etag | OriginalInfo | 原图 ETag 值 | String |
ProcessResults 节点内容:
节点名称(关键字) | 父节点 | 描述 | 类型 |
Object | ProcessResults | 每个图片的处理结果 | Container |
Object 节点内容:
节点名称(关键字) | 父节点 | 描述 | 类型 |
Key | Object | 抠图后图片文件名 | String |
Location | Object | 抠图后的图片链接 | String |
ETag | Object | 抠图后图片的 ETag 值 | String |
Size | Object | 抠图后图片大小 | Int |
示例
请求
PUT /<ObjectKey> HTTP/1.1Host: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: GMT DateAuthorization: Auth StringPic-Operations:{"is_pic_info": 1,"rules": [{"fileid": "exampleobject","rule": "ci-process=AIPortraitMatting"}]}
处理后的图片存至存储桶,并以fileid字段的值作为对象名称。
响应
HTTP/1.1 200 OKContent-Type: application/xmlContent-Length: 645Date: Tue, 23 Apr 2022 09:06:16 GMTStatus: 200 OKServer: tencent-cix-cos-request-id: NWFjMzQ0MDZfOTBmYTUwXzZkZV8z****<UploadResult><OriginalInfo><Key>goods_matting.jpg</Key><Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/filename.jpg</Location><ETag>"ed60e3598e6862d8c8443a06acfb2153"</ETag></OriginalInfo><ProcessResults><Object><Key>goods_matting_process.jpeg</Key><Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject</Location><Format/><Size>354256</Size><ETag>"521451f63c331becf533e466732c1091"</ETag></Object></ProcessResults></UploadResult>
方式三:云上数据处理
请求语法
POST /<ObjectKey>?image_process HTTP/1.1Host: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: GMT DateAuthorization: Auth StringPic-Operations: <PicOperations>
说明:
请求
请求头
头部名称 | 描述 | 类型 |
Pic-Operations | 对图片进行操作的参数 | String |
Pic-Operations 为 json 格式的字符串,具体参数如下:
参数名称 | 类型 | 是否必选 | 描述 |
is_pic_info | Int | 否 | 是否返回原图信息,0不返回原图信息,1返回原图信息,默认为0 |
rules | Array | 否 | 处理规则,一条规则对应一个处理结果(目前支持五条规则),不填则不进行图片处理 |
rules(json 数组)中每一项具体参数如下:
参数名称 | 类型 | 是否必选 | 描述 |
bucket | String | 否 | 存储结果的目标存储桶名称,格式为 BucketName-AppId,如果不指定的话默认保存到当前存储桶 |
fileid | String | 是 | 处理后文件的保存路径及名称。名称规则说明: 例如源文件的路径及文件名为:/p1/test1.jpg 以/开头为绝对路径,例如 fileid 值为 /p2/test2.jpg 时,表示在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件 不以/开头为相对路径,例如 fileid 值为 p2/test2.jpg 时,表示在 p1 文件夹中新建了一个 p2 文件夹,然后在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件 注意:请不要以/结尾,否则会产生空文件名 如希望修复后的图片覆盖原图,请将fileid字段设置为 |
rule | String | 是 | 固定为:ci-process=AIPortraitMatting。center-layout、padding-layout 与下载时处理一致 |
请求体
该请求body内容为待裁剪图片原图
[Image Content]
响应
响应头
响应体
该响应体返回 content-type 为 application/xml 数据,具体的数据内容如下:
节点名称(关键字) | 父节点 | 描述 | 类型 |
UploadResult | 无 | 请求结果 | Container |
UploadResult 的内容:
节点名称(关键字) | 父节点 | 描述 | 类型 |
OriginalInfo | UploadResult | 原图信息 | Container |
ProcessResults | UploadResult | 请求处理结果 | Container |
OriginalInfo 节点内容:
节点名称 | 父节点 | 描述 | 类型 |
Key | OriginalInfo | 原图文件名 | String |
Location | OriginalInfo | 原图路径 | String |
Etag | OriginalInfo | 原图 ETag 值 | String |
ProcessResults 节点内容:
节点名称(关键字) | 父节点 | 描述 | 类型 |
Object | ProcessResults | 每个图片的处理结果 | Container |
Object 节点内容:
节点名称(关键字) | 父节点 | 描述 | 类型 |
Key | Object | 抠图后图片文件名 | String |
Location | Object | 抠图后的图片链接 | String |
ETag | Object | 抠图后图片的 ETag 值 | String |
Size | Object | 抠图后图片大小 | Int |
示例
请求
POST /<ObjectKey>?image_process HTTP/1.1Host: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: GMT DateContent-length: SizeAuthorization: Auth StringPic-Operations:{"rules": [{"fileid": "exampleobject","rule": "ci-process=AIPortraitMatting"}]}
处理后的图片存至存储桶,并以fileid字段的值作为对象名称。
响应
HTTP/1.1 200 OKContent-Type: application/xmlContent-Length: 645Date: Tue, 23 Apr 2022 09:06:16 GMTStatus: 200 OKServer: tencent-cix-cos-request-id: NWFjMzQ0MDZfOTBmYTUwXzZkZV8z****<UploadResult><OriginalInfo><Key>goods_matting.jpg</Key><Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/filename.jpg</Location><ETag>"ed60e3598e6862d8c8443a06acfb2153"</ETag></OriginalInfo><ProcessResults><Object><Key>goods_matting_process.jpeg</Key><Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject</Location><Format/><Size>354256</Size><ETag>"521451f63c331becf533e466732c1091"</ETag></Object></ProcessResults></UploadResult>