合成动图

最近更新时间:2024-05-07 17:43:12

我的收藏

功能概述

腾讯云数据万象通过 imageMogr2 接口提供合成功能,可将多张 jpg 或 png 格式的图片合成为一个 GIF 动图。该功能支持以下处理方式:
下载时处理
上传时处理
云上数据处理

授权说明

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

服务开通

使用该功能将默认为您开通数据万象,并绑定存储桶,无需角色授权,即可直接使用。

使用限制

使用该接口时,请先确认相关限制条件。详情请参见 使用限制
动图合成接口目前仅适用于存储在 COS 上的图片。
支持合成的原图格式:jpg/jpeg、png。
支持的最大帧数:20。
原图限制:大小不超过32MB,图片尺寸不超过1080*1080。

费用说明

该接口为付费服务,产生的费用将由数据万象收取,详细计费说明可参见 图片处理费用
如果采用下载时处理的方式,且通过外网进行下载,调用会产生 流量费用
该功能计入基础图片处理用量,其中处理用量按原图大小之和计算,例如使用了 10 张大小为 5MB 的 jpg 图片进行合成动图,则统计用量计为 50MB。

接口示例

1. 下载时处理

GET /<ObjectKey>?imageMogr2/animate/duration/<duration>/images/<imageurl1>/<imageurl2> HTTP/1.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: <GMT Date>
Authorization: <Auth String>
说明:
请忽略上面的空格与换行符。

2. 上传时处理

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": "imageMogr2/animate/duration/<duration>/images/<imageurl1>/<imageurl2>"
}]
}

3. 云上数据处理

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:
{
"is_pic_info": 1,
"rules": [{
"fileid": "exampleobject",
"rule": "imageMogr2/animate/duration/<duration>/images/<imageurl1>/<imageurl2>"
}]
}
说明:
Authorization: Auth String,详情请参见 请求签名 文档。
Pic-Operations 为 json 格式的字符串,具体参数信息可参考 图片持久化处理
fileidObjectKey 相同时,处理后的图片将覆盖原图存储;不相同时将分别存储原图和处理后图片。
fileid 的值需要经过 URL 安全的 Base64 编码

处理参数说明

参数
参数说明
是否必填
ObjectKey
COS 中的文件名称,例如 folder/sample.jpg,在这里将作为合成后的动图第一帧。
duration
GIF 动图的每帧间隔时间(单位: ms),取值为大于 0 的整数。例如设置间隔为10ms,则参数为/duration/10。
images
待合成的图片原图链接,最多可添加19个,需要经过 URL安全Base64编码。例如原图1的链接经过编码后的字符串为ahxxxxxxxxxmc,原图2的链接经过编码后的字符串为wywxxxxxxxxjih,则参数为/images/ahxxxxxxxxxmc/wywxxxxxxxxjih。
注意:
如果待合成的原图尺寸不相同,最终合成的动图将以第一帧的体积为标准,对所有图片进行等比缩放。

实际案例

说明;
本篇文档中的实际案例仅包含下载时处理,该类处理不会保存处理后的图片至存储桶。如有保存需求,您可查阅 图片持久化处理 文档并配置上传时处理云上数据处理
以存储桶examples-125xxxxxx中的image-1.jpg为动图首帧,和同个存储桶内的image-2.jpg合成为一个间隔50ms的动图。
http://examples-125xxxxxx.cos.ap-shanghai.myqcloud.com/image-1.jpg?imageMogr2/animate/duration/50/images/aHR0cDovL2V4YW1wbGVzLTEyNXh4eHh4eC5jb3MuYXAtc2hhbmdoYWkubXlxY2xvdWQuY29tL2ltYWdlLTIuanBn

注意事项

为了避免未授权人员通过访问不携带处理参数的链接实现访问和下载原图的情况,您可同时将处理参数签入到请求签名中,处理参数整体是参数的 key,value 为空,如下是简单的示例(仅做样式参考,可能已经过期无法直接访问),详细计算方法请参见 请求签名
http://examples-1251000004.cos.ap-shanghai.myqcloud.com/sample.jpeg?q-sign-algorithm=sha1&q-ak=AKID********************&q-sign-time=1593342360;1593342720&q-key-time=1593342360;1593342720&q-header-list=&q-url-param-list=watermark%252f1%252fimage%252fahr0cdovl2v4yw1wbgvzlteyntewmdawmdqucgljc2gubxlxy2xvdwquy29tl3nodwl5aw4uanbn%252fgravity%252fsoutheast&q-signature=26a429871963375c88081ef60247c5746e834a98&watermark/1/image/aHR0cDovL2V4YW1wbGVzLTEyNTEwMDAwMDQucGljc2gubXlxY2xvdWQuY29tL3NodWl5aW4uanBn/gravity/southeast