图片持久化处理

最后更新时间:2021-07-07 10:57:40

    简介

    本文档提供关于图片持久化处理相关的 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 信息