图像智能裁剪

最近更新时间:2025-04-30 11:13:52

我的收藏

功能描述

腾讯云数据万象通过 AIImageCrop 接口对图像进行智能裁剪,支持持久化、云上处理及下载时处理。
注意:
本接口属于 GET 请求,为同步请求方式,需携带签名,具体签名设置请参见 请求签名

授权说明

通过子账号使用时,需要授予对应权限,COS 权限具体请参见 COS action,CI 权限具体请参见 数据万象 action
下载时处理:授权策略 中 action 设置为 cos:GetObjectci:CreateAIImageCropJob
上传时处理:授权策略 中 action 设置为 cos:PutObject
云上数据处理:授权策略 中 action 设置为 cos:GetObjectcos:PutObject(注意 GetObject 对应的 resource 为源文件,PutObject 对应的 resource 为转存的文件)。

服务开通

使用该功能需提前开通数据万象,并 绑定存储桶

使用限制

使用该接口时,请先确认相关限制条件。详情请参见 使用限制

费用说明

该接口为付费服务,产生的费用将由数据万象收取,详细计费说明可参见 内容识别费用


处理方式一:下载时处理

请求

 原图存储在 COS。
GET /<ObjectKey>?ci-process=AIImageCrop&width=<width>&height=<height>&fixed=<fixed> HTTP/1.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: <GMT Date>
Authorization: <Auth String>
 原图来自其他链接。
GET /?ci-process=AIImageCrop&width=<width>&height=<height>&fixed=<fixed>&detect-url=<detect-url> HTTP/1.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: <GMT Date>
Authorization: <Auth String>

请求内容

操作名称:AIImageCrop。
参数
含义
类型
是否必选
ObjectKey
对象文件名,例如:folder/document.jpg
String
ci-process
数据万象处理能力,智能裁剪固定为 AIImageCrop
String
detect-url
您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey。
detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%3A%2F%2Fwww.example.com%2Fabc.jpg
String
width
需要裁剪区域的宽度,与 height 共同组成所需裁剪的图片宽高比例;输入数字请大于0、小于图片宽度的像素值
Integer
height
需要裁剪区域的高度,与 width 共同组成所需裁剪的图片宽高比例;输入数字请大于0、小于图片高度的像素值;width : height 建议取值在[1, 2.5]之间,超过这个范围可能会影响效果
Integer
fixed
是否严格按照 width 和 height 的值进行输出
取值为0时,宽高比例(width : height)会简化为最简分数,即如果 width 输入10、height 输入20,会简化为1:2
取值为1时,输出图片的宽度等于 width,高度等于 height;默认值为0
Integer
ignore-error
当此参数为1时,针对文件过大等导致处理失败的场景,会直接返回原图而不报错
Integer

响应

HTTP/1.1 200 OK
Content-Type: image/png
Content-Length: 98645
Date: Tue, 23 Apr 2022 09:06:16 GMT
Status: 200 OK
Server: tencent-ci
x-cos-request-id: NWFjMzQ0MDZfOTBmYTUwXzZkZV8z****

[pic-content]
处理后的图片直接返回至响应体。

示例

请求

GET /filename.jpg?ci-process=AIImageCrop&width=<width>&height=<height>&fixed=<fixed> HTTP/1.1
Host: examplebucket-1250000000.cos.ap-chengdu.myqcloud.com
Date: Tue, 23 Apr 2022 09:06:16 GMT
Authorization: <Auth String>

响应

HTTP/1.1 200 OK
Content-Type: image/jpg
Content-Length: 98645
Date: Tue, 23 Apr 2022 09:06:16 GMT
Status: 200 OK
Server: tencent-ci
x-cos-request-id: NWFjMzQ0MDZfOTBmYTUwXzZkZV8z****

[pic-content]

处理方式二:上传时处理

请求

请求语法

PUT /<ObjectKey> HTTP/1.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: GMT Date
Authorization: Auth String
Pic-Operations: <PicOperations>
说明:
Authorization: 携带鉴权信息,用于验证请求的合法性的请求头,Pic-Operations 头部需签入签名信息中,详情请参见 请求签名 文档。

请求头

此接口仅使用公共请求头部,详情请参见 公共请求头部 文档。 除公共头部外,还需要传入如下头部:
头部名称
描述
类型
Pic-Operations
对图片进行操作的参数
String
Pic-Operations 为 json 格式的字符串,具体参数如下:
参数名称
描述
类型
是否必选
is_pic_info
是否返回原图信息,0不返回原图信息,1返回原图信息,默认为0
Int
rules
处理规则,一条规则对应一个处理结果(目前支持五条规则),不填则不进行图片处理
Array
rules(json 数组)中每一项具体参数如下:
参数名称
描述
类型
是否必选
bucket
存储结果的目标存储桶名称,格式为 BucketName-AppId,如果不指定的话默认保存到当前存储桶
String
fileid
处理后文件的保存路径及名称。名称规则说明:
例如源文件的路径及文件名为:/p1/test1.jpg
以/开头为绝对路径,例如 fileid 值为 /p2/test2.jpg 时,表示在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件
不以/开头为相对路径,例如 fileid 值为 p2/test2.jpg 时,表示在 p1 文件夹中新建了一个 p2 文件夹,然后在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件
注意:请不要以/结尾,否则会产生空文件名
如希望修复后的图片覆盖原图,请将 fileid 字段设置为<ObjectKey>
String
rule
处理参数
String
rule 包含的处理参数为:
参数名称
描述
类型
是否必选
ci-process
数据万象处理能力,智能裁剪参固定为 AIImageCrop
String
width
需要裁剪区域的宽度,与 height 共同组成所需裁剪的图片宽高比例;输入数字请大于0、小于图片宽度的像素值
Integer
height
需要裁剪区域的高度,与 width 共同组成所需裁剪的图片宽高比例;输入数字请大于0、小于图片高度的像素值;width : height 建议取值在[1, 2.5]之间,超过这个范围可能会影响效果
Integer
fixed
是否严格按照 width 和 height 的值进行输出
取值为0时,宽高比例(width : height)会简化为最简分数,即如果 width 输入10、height 输入20,会简化为1:2
取值为1时,输出图片的宽度等于 width,高度等于 height;默认值为0
Integer

请求体

该请求 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.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: GMT Date
Authorization: Auth String
Pic-Operations:
{
"is_pic_info": 1,
"rules": [{
"fileid": "exampleobject",
"rule": "ci-process=AIImageCrop&width=<width>&height=<height>&fixed=<fixed>"
}]
}
处理后的图片存至存储桶,并以 fileid 字段的值作为对象名称。

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 645
Date: Tue, 23 Apr 2022 09:06:16 GMT
Status: 200 OK
Server: tencent-ci
x-cos-request-id: NWFjMzQ0MDZfOTBmYTUwXzZkZV8z****

<UploadResult>
<OriginalInfo>
<Key>ObjectKey</Key>
<Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/filename.jpg</Location>
<ETag>"ed60e3598e6862d8c8443a06acfb2153"</ETag>
</OriginalInfo>
<ProcessResults>
<Object>
<Key>exampleobject</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.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: GMT Date
Authorization: Auth String
Pic-Operations: <PicOperations>
说明:
Authorization:Auth String ,详情请参见 请求签名 文档。

请求头

此接口仅使用公共请求头部,详情请参见 公共请求头部 文档。 除公共头部外,还需要传入如下头部:
头部名称
描述
类型
Pic-Operations
对图片进行操作的参数
String
Pic-Operations 为 json 格式的字符串,具体参数如下:
参数名称
描述
类型
是否必选
is_pic_info
是否返回原图信息,0不返回原图信息,1返回原图信息,默认为0
Int
rules
处理规则,一条规则对应一个处理结果(目前支持五条规则),不填则不进行图片处理
Array
rules(json 数组)中每一项具体参数如下:
参数名称
描述
类型
是否必选
bucket
存储结果的目标存储桶名称,格式为 BucketName-AppId,如果不指定的话默认保存到当前存储桶
String
fileid
处理后文件的保存路径及名称。名称规则说明:
例如源文件的路径及文件名为:/p1/test1.jpg
以/开头为绝对路径,例如 fileid 值为 /p2/test2.jpg 时,表示在 p2文件夹中存储了一个文件名为 test2.jpg 的文件
不以/开头为相对路径,例如 fileid 值为 p2/test2.jpg 时,表示在 p1文件夹中新建了一个 p2文件夹,然后在 p2文件夹中存储了一个文件名为 test2.jpg 的文件
注意:请不要以/结尾,否则会产生空文件名
如希望修复后的图片覆盖原图,请将 fileid 字段设置为<ObjectKey>
String
rule
处理参数
String
rule 包含的处理参数为:
参数名称
描述
类型
是否必选
ci-process
数据万象处理能力,智能裁剪参固定为 AIImageCrop
String
width
需要裁剪区域的宽度,与 height 共同组成所需裁剪的图片宽高比例;输入数字请大于0、小于图片宽度的像素值
Integer
height
需要裁剪区域的高度,与 width 共同组成所需裁剪的图片宽高比例;输入数字请大于0、小于图片高度的像素值;width : height 建议取值在[1, 2.5]之间,超过这个范围可能会影响效果
Integer
fixed
是否严格按照 width 和 height 的值进行输出
取值为0时,宽高比例(width : height)会简化为最简分数,即如果 width 输入10、height 输入20,会简化为1:2
取值为1时,输出图片的宽度等于 width,高度等于 height;默认值为0
Integer

请求体

响应

响应头

此接口返回公共响应头部,详情请参见 公共响应头部 文档。

响应体

该响应体返回 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.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: GMT Date
Content-length: Size
Authorization: Auth String
Pic-Operations:
{
"rules": [{
"fileid": "exampleobject",
"rule": "ci-process=AIImageCrop&width=<width>&height=<height>&fixed=<fixed>"
}]
}
处理后的图片存至存储桶,并以 fileid 字段的值作为对象名称。

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 645
Date: Tue, 23 Apr 2022 09:06:16 GMT
Status: 200 OK
Server: tencent-ci
x-cos-request-id: NWFjMzQ0MDZfOTBmYTUwXzZkZV8z****

<UploadResult>
<OriginalInfo>
<Key>ObjectKey</Key>
<Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/filename.jpg</Location>
<ETag>"ed60e3598e6862d8c8443a06acfb2153"</ETag>
</OriginalInfo>
<ProcessResults>
<Object>
<Key>exampleobject</Key>
<Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject</Location>
<Format/>
<Size>354256</Size>
<ETag>"521451f63c331becf533e466732c1091"</ETag>
</Object>
</ProcessResults>
</UploadResult>