使用CDN边缘计算处理图片参数

29 min read

图片处理参数

https://help.aliyun.com/document_detail/44705.html?spm=a2c4g.11186623.6.751.24957fd8NOU5Bs

使用SDK处理图片

https://help.aliyun.com/document_detail/93499.html?spm=a2c4g.11186623.6.1430.14dc59dfU7q7vE

EdgeScript语法

https://help.aliyun.com/document_detail/126566.html?spm=a2c4g.11186623.6.717.6b8f4d67g1iNrp

本文为您介绍EdgeScript语法中注释、标识符、数据类型、变量、运算符、语句和函数的使用规则。

注释

以#开头的当前行后续内容,均为注释。

例如:# this is annotation

标识符规则

标识符规则如下:

  • 由字母、数字、下划线组成,数字不能开头,区分大小写。
  • 变量名(内置 、自定义)和函数名(内置 、自定义)均遵守标识符规则。

数据类型

数据类型规则如下:

  • 字符串

    字面常量:使用单引号括起来,例如:'hello, EdgeScript'

  • 数字

    字面常量:十进制数字,例如:10、-99、1.1。

  • 布尔值

    字面常量:true、false。

  • 字典

    字面常量如下:

    • []:空

    • ['key1', 'key2', 100] 
      

      • 1 -> 'key1'
      • 2 -> 'key2'
      • 3 -> 'key3'
    • ['key1' = 'value1', 'key2' = 1000]
      
      • 'key1' -> 'value1'
      • 'key2' -> 1000

变量

变量规则如下:

  • 定义

    赋值即定义。

  • 使用

    • 内置和自定义变量,均由变量名进行引用 。

      • 引用内置变量:host
      • 引用自定义变量:seckey
    • 为强调变量的内置属性,可通过

      $
      

      进行引用。

      引用内置变量:$host

    • 自定义变量的名称不能与内置变量同名。

      内置变量,请参见EdgeScript内置变量表

运算符

运算符规则如下:

  • = :赋值运算符

    • 例如:seckey = 'ASDLFJ234dxvf34sDF'
    • 例如:seckeys = ['key1', 'key2']
  • - :负号运算符

    例如:inum = -10

  • 对各数据类型的操作,不再另行支持运算符,均由内置函数支持,请参见

    条件判断相关

    • 各数据类型内置函数支持
      • 字符串类型内置处理函数。
      • 数字类型内置处理函数。
      • 字典类型内置处理函数。
    • 示例
      • sval = concat(sval, 'trail')
      • len(arrvar)

语句

语句规则如下:

  • 条件判断语句

    if condition {   
       ...
    }
    
    if condition1 {   
       if conditon2 {
            ...
       }
    }
    
    if condition {
       ...
    } else {
       ...
    }
    
  • 语句解释

    • condition
      

      可由如下语法元素组成:

      • 字面值
      • 变量
      • 函数调用
    • body部分

      • 允许空body。
      • 允许多语句:一行一条语句。
    • 支持多层嵌套

    • CodingStyle

      语法强制要求左大扩号跟随在if condition之后,且同行。

函数

函数语法和定义说明如下:

  • 定义语法

    def 函数名参数列表 {
       ...
    }
    
  • 定义说明

    • 形参列表

      • 允许无参。
      • 允许多参:由逗号分隔。
    • 函数体部分

      • 允许空body。
      • 允许多语句:一行一条语句。
      • 返回值:支持return语句。
    • CodingStyle

      语法强制要求左大扩号跟随在def函数名(参数列表)之后,且同行。

  • 函数调用

    无论内置、自定义函数,均通过函数名()进行调用。

其他

EdgeScript全文不允许出现任何双引号。

在线图片处理预览

https://gosspublic.alicdn.com/image/index.html?spm=a2c4g.11186623.2.9.658e3b4akdjJTL

边缘处理后台

https://cdnnext.console.aliyun.com/domain/detail/pic.xxx.com/edgescript

使用边缘计算处理图片

图片会301重定向至增加处理参数的新地址

m1 = not(match_re($request_uri, '.+q_90$'))
m2 = match_re($uri, '.+(.JPEG|.jpeg|.JPG|.jpg|.PNG|.png)$')
if and(m1, m2) {
    rewrite(concat($uri, '?x-oss-process=image/auto-orient,1/resize,m_lfit,w_1000/quality,q_90'), 'enhance_redirect', 301)
}