简介
本文档提供关于图片持久化处理相关的 API 概览以及 SDK 示例代码。
API | 操作描述 |
对象存储(Cloud Object Storage,COS)提供的上传时处理功能可以帮助使用者在上传时实现图片处理。此外能够对已存储在 COS 的图片进行相应处理操作,并将结果存入到 COS。支持处理32MB以内的图片。 |
上传时处理
功能说明
数据万象提供的上传时处理功能可以帮助使用者在上传时实现图片处理。您只需要在请求包头部中加入 Pic-Operations 项并设置好相应参数,就可在图片上传时实现相应的图片处理,并可将原图和处理结果存入到 COS。
方法原型
ci_put_object(self, Bucket, Body, Key, EnableMD5=False, **kwargs)
请求示例
with open('local.jpg', 'rb') as fp:response, data = client.ci_put_object(Bucket='examplebucket-1250000000',Body=fp,Key=ci_file_name,# pic operation json structPicOperations='{"is_pic_info":1,"rules":[{"fileid":"format.png","rule":"imageView2/format/png"}]}')
全部参数请求示例
response = client.ci_put_object(Bucket='examplebucket-1250000000',Body=b'bytes'|file,Key='exampleobject',EnableMD5=False|True,ACL='private'|'public-read', # 请慎用此参数,否则会达到1000条 ACL 上限GrantFullControl='string',GrantRead='string',StorageClass='STANDARD'|'STANDARD_IA'|'ARCHIVE',Expires='string',CacheControl='string',ContentType='string',ContentDisposition='string',ContentEncoding='string',ContentLanguage='string',ContentLength='123',ContentMD5='string',Metadata={'x-cos-meta-key1': 'value1','x-cos-meta-key2': 'value2'},TrafficLimit='1048576'PicOperations='{"is_pic_info":1,"rules":[{"fileid":"format.png","rule":"imageView2/format/png"}]}')
参数说明
参数名称 | 参数描述 | 类型 | 是否必填 |
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Body | 上传对象的内容,可以为文件流或字节流 | file/bytes | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg | String | 是 |
PicOperations | 万象图片处理参数,请参见 图片持久化处理 | String | 是 |
EnableMD5 | 是否需要 SDK 计算 Content-MD5,默认关闭,打开后将增加上传耗时 | Bool | 否 |
ACL | 设置对象的 ACL,例如 'private','public-read' | String | 否 |
GrantFullControl | 赋予被授权者所有的权限,格式为 id="OwnerUin" | String | 否 |
GrantRead | 赋予被授权者读的权限,格式为 id="OwnerUin" | String | 否 |
StorageClass | 设置对象的存储类型,STANDARD,STANDARD_IA,ARCHIVE。默认值为 STANDARD。更多存储类型,请参见 存储类型概述 | String | 否 |
Expires | 设置 Expires | String | 否 |
CacheControl | 缓存策略,设置 Cache-Control | String | 否 |
ContentType | 内容类型,设置 Content-Type | String | 否 |
ContentDisposition | 对象名称,设置 Content-Disposition | String | 否 |
ContentEncoding | 编码格式,设置 Content-Encoding | String | 否 |
ContentLanguage | 语言类型,设置 Content-Language | String | 否 |
ContentLength | 设置传输长度 | String | 否 |
ContentMD5 | 设置上传对象的 MD5 值用于校验 | String | 否 |
Metadata | 用户自定义的对象元数据, 必须以 x-cos-meta 开头,否则会被忽略 | Dict | 否 |
TrafficLimit | 单链接限速的值,单位为 bit/s,限速值设置范围为819200 - 838860800,即100KB/s - 100MB/s | String | 否 |
PicOperations 为 json 格式的字符串,具体参数如下:
参数名称 | 描述 | 类型 | 是否必选 |
is_pic_info | 是否返回原图信息,0不返回原图信息,1返回原图信息,默认为0 | Int | 否 |
rules | 处理规则,一条规则对应一个处理结果(目前支持五条规则),不填则不进行图片处理 | Array | 否 |
rules(json 数组)中每一项具体参数如下:
参数名称 | 描述 | 类型 | 是否必选 |
bucket | 存储结果的目标存储桶名称,格式为 BucketName-APPID,如果不指定的话默认保存到当前存储桶 | String | 否 |
fileid | 处理结果的文件路径名称,如以 / 开头,则存入指定文件夹中,否则,存入原图文件存储的同目录 | String | 是 |
rule | 处理参数,参见数据万象图片处理 API。若按指定样式处理,则以 style/ 开头,后加样式名,如样式名为 test ,则 rule 字段为 style/test | String | 是 |
返回结果说明
获取原图片和处理信息,类型为 dict:
{'OriginalInfo': {'Key': 'local.jpg','Location': 'examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/local.jpg','ETag': '"aff1b996bcc63a0f0259df0de2fa989f38c5ce7e"','ImageInfo': {'Format': 'JPEG','Width': '300','Height': '168','Quality': '74','Ave': '0x1a3451','Orientation': '0''FrameCount': '1'}},'ProcessResults': {'Object': {'Key': 'format.png','Location': 'examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/format.png','Format': 'png','Width': '300','Height': '168','Size': '77063','Quality': '74','ETag': '"a07dc5bcfa238e7d23d2d5884da4ac328aaaa9c6"''FrameCount': '1'}}}
响应包体具体数据内容如下:
参数名称 | 类型 | 描述 |
UploadResult | Container | 原图信息 |
UploadResult 节点内容:
参数名称 | 类型 | 描述 |
OriginalInfo | Container | 原图信息 |
ProcessResults | Container | 图片处理结果 |
OriginalInfo 节点内容:
节点名称 | 类型 | 描述 |
Key | String | 原图文件名 |
Location | String | 图片路径 |
ImageInfo | Container | 原图图片信息 |
ETag | String | 原图 ETag 信息(若处理结果图覆盖原图则为结果图 ETag 信息) |
ImageInfo 节点内容:
节点名称 | 类型 | 描述 |
Format | String | 格式 |
Width | Int | 图片宽度 |
Height | Int | 图片高度 |
Quality | Int | 图片质量 |
Ave | String | 图片主色调 |
Orientation | Int | 图片旋转角度 |
FrameCount | Int | 图片帧数,静态图默认为1 |
ProcessResults 节点内容:
节点名称 | 类型 | 描述 |
Object | Container | 每一个图片处理结果 |
Object 节点内容:
节点名称 | 类型 | 描述 |
Key | String | 文件名 |
Location | String | 图片路径 |
Format | String | 图片格式 |
Width | Int | 图片宽度 |
Height | Int | 图片高度 |
Size | Int | 图片大小 |
Quality | Int | 图片质量 |
ETag | String | 处理结果图 ETag 信息 |
FrameCount | Int | 图片帧数,静态图默认为1 |
云上数据处理
功能说明
图片持久化处理 API 能够对已存储在 COS 的图片进行相应处理操作,并将结果存入到 COS。
方法原型
ci_image_process(self, Bucket, Key, **kwargs)
请求示例
response, data = client.ci_image_process(Bucket='examplebucket-1250000000',Key=ci_file_name,# pic operation json structPicOperations='{"is_pic_info":1,"rules":[{"fileid":"format.png","rule":"imageView2/format/png"}]}')
全部参数请求示例
response, data = client.ci_image_process(Bucket='examplebucket-1250000000',Key=ci_file_name,# pic operation json structPicOperations='{"is_pic_info":1,"rules":[{"fileid":"format.png","rule":"imageView2/format/png"}]}')
参数说明
参数名称 | 参数描述 | 类型 | 是否必填 |
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg | String | 是 |
PicOperations | 万象图片处理参数,请参见 图片持久化处理 | String | 是 |
PicOperations 为 json 格式的字符串,具体参数如下:
参数名称 | 描述 | 类型 | 是否必选 |
is_pic_info | 是否返回原图信息,0不返回原图信息,1返回原图信息,默认为0 | Int | 否 |
rules | 处理规则,一条规则对应一个处理结果(目前支持五条规则),不填则不进行图片处理 | Array | 否 |
rules(json 数组)中每一项具体参数如下:
参数名称 | 描述 | 类型 | 是否必选 |
bucket | 存储结果的目标存储桶名称,格式为 BucketName-APPID,如果不指定的话默认保存到当前存储桶 | String | 否 |
fileid | 处理结果的文件路径名称,如以 / 开头,则存入指定文件夹中,否则,存入原图文件存储的同目录 | String | 是 |
rule | 处理参数,可参见图片处理 API。若按指定样式处理,则以 style/ 开头,后加样式名,如样式名为 test ,则 rule 字段为 style/test | String | 是 |
返回结果说明
获取对象的元信息,类型为 dict:
{'OriginalInfo': {'Key': 'local.jpg','Location': 'examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/local.jpg','ETag': '"aff1b996bcc63a0f0259df0de2fa989f38c5ce7e"','ImageInfo': {'Format': 'JPEG','Width': '300','Height': '168','Quality': '74','Ave': '0x1a3451','Orientation': '0''FrameCount': '1'}},'ProcessResults': {'Object': {'Key': 'format.png','Location': 'examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/format.png','Format': 'png','Width': '300','Height': '168','Size': '77063','Quality': '74','ETag': '"a07dc5bcfa238e7d23d2d5884da4ac328aaaa9c6"''FrameCount': '1'}}}
响应包体具体数据内容如下:
参数名称 | 类型 | 描述 |
UploadResult | Container | 原图信息 |
UploadResult 节点内容:
参数名称 | 类型 | 描述 |
OriginalInfo | Container | 原图信息 |
ProcessResults | Container | 图片处理结果 |
OriginalInfo 节点内容:
节点名称 | 类型 | 描述 |
Key | String | 原图文件名 |
Location | String | 图片路径 |
ImageInfo | Container | 原图图片信息 |
ETag | String | 原图 ETag 信息(若处理结果图覆盖原图则为结果图 ETag 信息) |
ImageInfo 节点内容:
节点名称 | 类型 | 描述 |
Format | String | 格式 |
Width | Int | 图片宽度 |
Height | Int | 图片高度 |
Quality | Int | 图片质量 |
Ave | String | 图片主色调 |
Orientation | Int | 图片旋转角度 |
FrameCount | Int | 图片帧数,静态图默认为1 |
ProcessResults 节点内容:
节点名称 | 类型 | 描述 |
Object | Container | 每一个图片处理结果 |
Object 节点内容:
节点名称 | 类型 | 描述 |
Key | String | 文件名 |
Location | String | 图片路径 |
Format | String | 图片格式 |
Width | Int | 图片宽度 |
Height | Int | 图片高度 |
Size | Int | 图片大小 |
Quality | Int | 图片质量 |
ETag | String | 处理结果图 ETag 信息 |
FrameCount | Int | 图片帧数,静态图默认为1 |