智能多媒体服务

  • 使用说明

    最近更新时间:2019-09-06 16:31:27

    概述

    七牛云存储内建了一个非常高效易用的数据处理框架。数据处理框架可以对存储在七牛云上的文件执行一系列符合规范的数据处理操作。数据处理框架对于资源类型没有限制,但是特定的数据处理操作则会有各自适合的处理对象,例如对非图片类型的资源类型上应用缩略图操作可能会返回错误的结果。

    数据处理使用方式可以在以下三种场景触发:

    触发场景 处理类别 说明
    访问资源时 同步处理 只需要在资源URL后加上具体数据操作指令和参数即可。
    对已有资源,手动触发 异步处理 针对已存在空间中的资源手动触发处理流程,与上传时的数据处理支持相同,这个过程也为异步且可查询操作进度。具体请参考这里
    资源上传时,自动触发 异步处理 上传时可在上传策略中设置persistentOps字段,在资源上传完成后七牛云存储会以异步的方式执行数据处理操作,并持久化存储数据处理结果。支持查询数据处理操作的进度。

    一个常规的数据处理操作包含一个操作指令和若干操作参数,如下所示:

    <fop>/<param1_value>/<param2_name>/<param2_value>/...
    

    示例

    开发者可以在访问资源时制定执行一个或多个数据处理指令,以直接获取经过处理后的结果。

    比较典型的一个场景是图片查看,客户端可以上传一张高精度的图片,然后在查看图片的时候根据屏幕规格生成一张大小适宜的缩略图。这样既可以明显降低网络流量,而且可以提高图片显示速度,还能降低移动设备的内存占用。

    原图

    https://odum9helk.qnssl.com/resource/gogopher.jpg

    链接

    针对该原图生成一张480x320大小的缩略图

    https://odum9helk.qnssl.com/resource/gogopher.jpg?imageView2/2/w/320/h/480

    链接

    我们还可以定义图片样式例如叫iphone,以缩短URL并提高可读性

    https://odum9helk.qnssl.com/resource/gogopher.jpg-iphone

    链接

    管道

    规格

    七牛云存储的数据处理功能规格如下:

    [GET] url?<fop>
    

    即基于文件的URL通过问号传参来实现数据处理,<fop>表示数据处理指令及其所需要的参数,是File Operation的缩写,表示文件处理。

    那么,将一个资源经由多个 <fop> 链式处理,各 <fop> 之间用|分割,我们称之为管道(pipeline)。

    管道操作的规格如下:

    [GET] url?<fop1>|<fop2>|<fop3>|<fopN>
    

    url 获取可以参考下载机制

    示例

    将一个原图缩略,然后在缩略图上打上另外一个图片作为水印:

    原图

    https://odum9helk.qnssl.com/resource/gogopher.jpg
    链接

    基于原图生成缩略图

    https://odum9helk.qnssl.com/resource/gogopher.jpg?imageView/2/h/200

    链接

    基于原图生成缩略图并打上水印

    https://odum9helk.qnssl.com/resource/gogopher.jpg?imageView/2/h/200|watermark/1/image/aHR0cHM6Ly9vZHVtOWhlbGsucW5zc2wuY29tL3Fpbml1LWxvZ28ucG5n

    链接

    样式

    如果觉得 url?<fop1>|<fop2>|<fop3>|<fopN> 这样的形式够冗长,还可以为这些串行的 <fop> 集合定义一个友好别名。如此一来,就可以用友好URL风格进行访问。

    我们先来熟悉七牛qrsctl工具的两个命令行:

    // 定义 url 和数据处理之间的分隔符为 separator 
    qrsctl separator <bucket> <separator>
    
    // 定义数据处理的别名为 aliasName
    qrsctl style <bucket> <aliasName> <fop>
    

    例如:

    // 定义 url 和数据处理之间的分隔符为 "-"
    qrsctl separator <bucket> "-"
    
    // 定义该数据处理样式名为 "iphone" 
    qrsctl style <bucket> "iphone" "imageView/2/h/200|watermark/1/image/aHR0cHM6Ly9vZHVtOWhlbGsucW5zc2wuY29tL3Fpbml1LWxvZ28ucG5n"
    

    那么,以下两个 URL 则等价:

    原始URL:

    https://odum9helk.qnssl.com/resource/gogopher.jpg?imageView/2/h/200|watermark/1/image/aHR0cHM6Ly9vZHVtOWhlbGsucW5zc2wuY29tL3Fpbml1LWxvZ28ucG5n

    友好风格URL:

    https://odum9helk.qnssl.com/resource/gogopher.jpg-iphone

    以上内容是否对您有帮助?
  • Icon free helper
    Close