控制台指南

最佳实践

开发者指南

API 文档

SDK 文档

图片持久化处理

最近更新时间:2021-05-08 15:28:53

简介

本文档提供关于图片持久化处理相关的 API 概览以及 SDK 示例代码。

API 操作描述
图片持久化处理 对象存储提供的上传时处理功能可以帮助使用者在上传时实现图片处理。此外能够对已存储在 COS 的图片进行相应处理操作,并将结果存入到 COS

上传时处理

功能说明

数据万象提供的上传时处理功能可以帮助使用者在上传时实现图片处理。您只需要在请求包头部中加入 Pic-Operations 项并设置好相应参数,就可在图片上传时实现相应的图片处理,并可将原图和处理结果存入到 COS。目前支持20M以内文件处理。

方法原型

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 struct
        PicOperations='{"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'
        }
    },
    '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"'
        }
    }
}

响应包体具体数据内容如下:

参数名称 类型 描述
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 图片旋转角度

ProcessResults 节点内容:

节点名称 类型 描述
Object Container 每一个图片处理结果

Object 节点内容:

节点名称 类型 描述
Key String 文件名
Location String 图片路径
Format String 图片格式
Width Int 图片宽度
Height Int 图片高度
Size Int 图片大小
Quality Int 图片质量
ETag String 处理结果图 ETag 信息

云上数据处理

功能说明

图片持久化处理 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 struct
    PicOperations='{"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 struct
    PicOperations='{"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'
        }
    },
    '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"'
        }
    }
}

响应包体具体数据内容如下:

参数名称 类型 描述
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 图片旋转角度

ProcessResults 节点内容:

节点名称 类型 描述
Object Container 每一个图片处理结果

Object 节点内容:

节点名称 类型 描述
Key String 文件名
Location String 图片路径
Format String 图片格式
Width Int 图片宽度
Height Int 图片高度
Size Int 图片大小
Quality Int 图片质量
ETag String 处理结果图 ETag 信息
目录