使用(Usage)

1. 图像处理参数

  • 斜线 / 隔开,区分不同的操作;
  • 逗号 , 隔开,区分操作中不同的参数;
  • 下划线 _ 隔开,key_value 的形式,区分参数的Key和Value;
  • value是复杂参数时,需要进行base64url_encode,是否需要encode查看文档参数详细说明;

1.1 图像保存时需要的参数

参数 必选 描述 取值范围
format 格式转换 jpeg
png
webp
quality 质量变换 [1,100]
默认值:settings.PROCESSOR_DEFAULT_QUALITY(75)
支持JPG和WebP
interlace 渐进显示 0:(默认值)表示将原图设置成标准显示
1:表示将原图设置成渐进显示
animation 保留动画 0:(默认值)表示不保留动画
1:表示保留动画效果

注意:多个操作key放在一起说明,使用都需要/隔开;从1.2开始都是单个操作说明;

示例:

  • format,webp webp能节省图像大小;
  • format,png 需要透明度使用png格式;
  • interlace,1/quality,70/format,jpeg 设置为质量75渐近显示的jpeg图像

1.2 缩放 resize

参数 必选 描述 取值范围
m 缩放模式,需设置wh才会生效 lfit(默认值) 等比缩放,缩放图限制为指定w与h的矩形内的最大图像
mfit 等比缩放,缩放图为延伸出指定w与h的矩形框外的最小图像
fit 将原图等比缩放为延伸出指定w与h的矩形框外的最小图像,然后将超出的部分进行居中裁剪
pad 将原图缩放为指定w与h的矩形内的最大图像,然后使用指定颜色居中填充空白部分
fixed 固定宽高,强制缩放
参照枚举 ResizeMode
w 目标缩放图的宽度 [1, settings.PROCESSOR_MAX_W_H]
h 目标缩放图的高度 [1, settings.PROCESSOR_MAX_W_H]
l 目标缩放图的最长边,优先级低于w、h配置 [1, settings.PROCESSOR_MAX_W_H]
s 目标缩放图的最短边,优先级低于l配置 [1, settings.PROCESSOR_MAX_W_H]
p 按百分比缩放图像,优先级低于s配置 [1, 1000]
小于100为缩小,大于100为放大
limit 当目标图像分辨率大于原图分辨率时,是否进行缩放 1 (默认值)不放大
0 按照指定参数进行缩放
color 填充的颜色,仅当m=pad时有效 默认值:FFFFFF(白色)

注意:settings.PROCESSOR_MAX_W_H 默认值为 30000

示例:

  • resize,m_fixed,w_1000,h_1000,l_700 其中l优先级低不会生效,原图1980x1080会强制缩放成1000x1000的图像

1.3 裁剪 crop

参数 必选 描述 取值范围
x 裁剪起点横坐标(默认左上角为原点) [0, 图像边界],默认为0
y 裁剪起点纵坐标 [0, 图像边界],默认为0
w 目标图的宽度 [1, 图像宽度],默认为最大值
h 目标图的高度 [1, 图像高度],默认为最大值
ratio 根据原图按照比例计算目标宽高;
优先级高于w、h
格式:w:h,eg: 4:3
g 按照九宫格的位置裁剪 见下图所示
pf xywh相应字段按照比例计算;
设置后相应字段取值范围为[1,100];
设置了g该参数无效
xywh4个字母的任意组合
padr 图像右边裁边 [1, 图像宽度],不设置不裁边
padb 图像底部裁边
(左和上裁边可以通过x,y控制)
[1, 图像高度],不设置不裁边

示例:

  • crop,ratio_4:3,g_center 原图是500x300会居中裁剪成400x300
  • crop,x_25,y_25,w_50,h_50,pf_xywh 原图是500x400根据百分比计算,会居中裁剪成250x200
  • crop,x_10,y_10,padr_10,padb_10 原图四周裁剪10像素

1.4 圆角 circle

参数 必选 描述 取值范围
r 将图像切出圆角,指定圆角的半径
没有设置或是超过最大内切圆的半径,按照最大内切圆的半径处理
[1, 图像边界]

注意:一般结合format,png使用,否则无透明度;

示例:

  • circle/format,png 不设置r值,原图800x800,会裁剪成圆形,尺寸还是800x800;
  • circle,r_10/format,png 原图800x800,原图四角有半径为10的圆角;
  • circle,r_1000/format,png 原图800x800,r值超过边界,结果输出圆形图像;

1.5 模糊效果 blur

参数 必选 描述 取值范围
r 高斯模糊半径,值越大图像越模糊 [1, 512]

示例:

  • blur,r_2

1.6 旋转 rotate

参数 必选 描述 取值范围
[value] 图像按顺时针旋转的角度 [0,360]
默认值:0,表示不旋转

注意:该操作参数无key,直接逗号后跟数值即可

示例:

  • rotate 相当于 rotate,0,不旋转
  • rotate,90 图像顺时针旋转90度
  • rotate,45 图像顺时针旋转45度,会改变原有图像宽高比

1.7 透明度 alpha

参数 必选 描述 取值范围
[value] 图像的不透明度 [0,100]
默认值:100,完全不透明

注意:该操作参数无key,直接逗号后跟数值即可;若原图非png图像,需结合format,png使用

示例:

  • alpha 相当于 alpha,100,完全不透明
  • alpha,0 图像完全透明
  • alpha,50/format,png 图像透明度50%

1.8 灰度图 gray

无任何参数

示例:

  • gray 图像会置灰
  • gray/format,jpeg/quality,75 一般会结合转换成jpeg并设置质量减少原图大小(非强制)

1.9 水印 watermark

参数 必选 描述 取值范围
x 水印在原图上的起点横坐标 [0, 图像边界]
默认 10
y 水印在原图上的起点纵坐标 [0, 图像边界]
默认 10
g 按照九宫格计算水印的位置,优先级高于x、y
pf xy相应字段按照比例计算;
设置后相应字段取值范围为[1,100];
设置了g该参数无效
xy4个字母的任意组合
fill 水印铺满原图 0 (原图) 不铺满
1 铺满全图
padx 平铺时单个水印间的水平间隔,仅在水印平铺开启时有效 [0,4096],默认 0
pady 平铺时单个水印间的垂直间隔,仅在水印平铺开启时有效 [0,4096],默认 0
image 图片水印的文件路径,需 base64url_encode 编码
text 文字水印内容,text和image必须传递一个
base64url_encode 编码
编码前文字内容长度不超过 64
font 字体文件路径,需 base64url_encode 编码
color 字体颜色 默认:000000 (黑色)
size 字体大小 默认:40
shadow 文字水印的阴影透明度 [0,100]
默认值:0,表示没有阴影
rotate 水印顺时针旋转角度 [0,360]
默认值:0,表示不旋转
order 文字和图片水印的前后顺序 0(默认值):表示图片水印在前
1:表示文字水印在前
see PositionOrder
align 文字和图片水印的对齐方式 0:表示文字水印和图片水印上对齐
1:表示文字水印和图片水印中对齐
2(默认值):表示文字水印和图片水印下对齐
3:垂直左对齐
4:垂直居中对齐
5:垂直右对齐
see PositionAlign
interval 否 文字和图片水印间的间距 [0,1000],默认值:0;单位:px
t 水印的不透明度 [0, 100],100不透明
design 水印尺寸的设计参照尺寸;
design=1000意思是水印按照短边1000图像设计的;
需参照图像和design的比例进行缩放水印
当design=1000,若水印100x100,原图1080x720,则将水印缩放为72x72

示例:

  • watermark,text_SGVsbG8g5LiW55WM,color_FFFFFF,size_80 文字水印其中SGVsbG8g5LiW55WMHello 世界编码后的

1.10 合并图像 merge

参数 必选 描述 取值范围
image 要参与合并的图像文件路径,需 base64url_encode 编码
actions iamge按照字符串参数进行预处理,需 base64url_encode 编码
bg 是否将imgae当做背景放在输入图像之下;定义输入图像和image参数的拼接顺序 0 (默认值) 否,顺序为(输入图像,image); 1 是,将image当做背景,顺序为(image,输入图像)
p 按输入图像的百分比缩放image图像,bg=1按照image缩放输入图像 [1, 1000]
小于100为缩小,大于100为放大
order 图像和image的前后顺序 0:该image在后
1:该image在前
不传递该参数align和interval不生效
see PositionOrder
align 图像和image的对齐方式 0:水平上对齐
1:水平居中对齐
2(默认值):水平下对齐
3:垂直左对齐
4:垂直居中对齐
5:垂直右对齐
see PositionAlign
interval 图像和image间的间距 [0,1000]
g 按照九宫格计算水印的位置,优先级高于x、y
x image在图像上的起点横坐标 [0, 图像边界]
默认 0
y image在图像上的起点纵坐标 [0, 图像边界]
默认 0
pf xy相应字段按照比例计算;
设置后相应字段取值范围为[1,100];
设置了g该参数无效
xy2个字母的任意组合
color 拼接后扩展部分的填充颜色 默认: 0000 (透明)

注: 参数 bg 取值 1 时,order之后的参数则是:图像在image上的坐标/数值。

示例:

  • merge,image_dGVzdHMvaW1ncy9sZW5uYS00MDB4MjI1LmpwZw,g_ne,color_FFFF/format,png 其中image是tests/imgs/lenna-400x225.jpg编码后的,FFFF 表示填充全透明

2. 图像处理函数

processor

process_image(input_uri, params, out_path=None, **kwargs)

处理图像

Parameters:
  • input_uri (str) –

    输入图像路径

  • params (Union[ProcessParams, dict, str]) –

    图像处理参数

  • out_path (Optional[str], default: None ) –

    输出图像保存路径

Raises:
  • ProcessLimitException

    超过处理限制会抛出异常

Returns:
  • Optional[ByteString]

    默认输出直接存储无返回,仅当out_path为空时会返回处理后图像的二进制内容

process_image_obj(ori_im, params, out_path=None, **kwargs)

处理图像

Parameters:
  • ori_im (ImageFile) –

    输入图像为Image对象

  • params (Union[ProcessParams, dict, str]) –

    图像处理参数

  • out_path (Optional[str], default: None ) –

    输出图像保存路径

Returns:
  • Optional[ByteString]

    默认输出直接存储无返回,仅当out_path为空时会返回处理后图像的二进制内容

extract_main_color(img_path, delta_h=0.3)

获取图像主色调

Parameters:
  • img_path (str) –

    输入图像的路径

  • delta_h (float, default: 0.3 ) –

    像素色相和平均色相做减法的绝对值小于该值,才用于计算主色调,取值范围[0,1]

Returns:
  • str

    颜色值,eg: FFFFFF

utils

base64url_encode(value)

对内容进行URL安全的Base64编码,需要将结果中的部分编码替换:

  • 将结果中的加号 + 替换成短划线 -;
  • 将结果中的正斜线 / 替换成下划线 _;
  • 将结果中尾部的所有等号 = 省略。
Parameters:
  • value (str) –

    输入字符串

Returns:
  • str

    返回编码后字符串

base64url_decode(value)

对URL安全编码进行解码

Parameters:
  • value (str) –

    输入编码字符串

Returns:
  • str

    解码后字符串

exceptions

ParamParseException

Bases: ProcessException

解析参数出现错误

ParamValidateException

Bases: ProcessException

对参数进行校验

ProcessException

Bases: Exception

图像处理异常基类

ProcessLimitException

Bases: Exception

图像处理限制

enums

OpAction

Bases: ChoiceEnum

支持的操作类型

Source code in imgprocessor/enums.py
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class OpAction(ChoiceEnum):
    """支持的操作类型"""

    # 其他
    RESIZE = ("resize", "缩放")
    CROP = ("crop", "裁剪")
    CIRCLE = ("circle", "圆角")
    BLUR = ("blur", "模糊效果")
    ROTATE = ("rotate", "旋转")
    ALPHA = ("alpha", "透明度")
    GRAY = ("gray", "灰度图")
    WATERMARK = ("watermark", "水印")
    # 特殊操作
    MERGE = ("merge", "合并图像")

ResizeMode

Bases: ChoiceEnum

图像缩放的模式

Source code in imgprocessor/enums.py
47
48
49
50
51
52
53
54
class ResizeMode(ChoiceEnum):
    """图像缩放的模式"""

    LFIT = ("lfit", "等比缩放,缩放图限制为指定w与h的矩形内的最大图片")  # 类似 ImageOps.contain
    MFIT = ("mfit", "等比缩放,缩放图为延伸出指定w与h的矩形框外的最小图片")  # 类似 ImageOps.cover
    FIT = ("fit", "将原图等比缩放为延伸出指定w与h的矩形框外的最小图片,然后将超出的部分进行居中裁剪")  # ImageOps.fit
    PAD = ("pad", "将原图缩放为指定w与h的矩形内的最大图片,然后使用指定颜色居中填充空白部分")  # ImageOps.pad
    FIXED = ("fixed", "固定宽高,强制缩放")

Geography

Bases: ChoiceEnum

图像中的九宫格位置

Source code in imgprocessor/enums.py
65
66
67
68
69
70
71
72
73
74
75
76
class Geography(ChoiceEnum):
    """图像中的九宫格位置"""

    NW = ("nw", "左上")
    NORTH = ("north", "中上")
    NE = ("ne", "右上")
    WEST = ("west", "左中")
    CENTER = ("center", "中部")
    EAST = ("east", "右中")
    SW = ("sw", "左下")
    SOUTH = ("south", "中下")
    SE = ("se", "右下")

PositionOrder

Bases: ChoiceEnum

两个元素的前后顺序

Source code in imgprocessor/enums.py
79
80
81
82
83
class PositionOrder(ChoiceEnum):
    """两个元素的前后顺序"""

    BEFORE = (0, "第一输入元素在前/在上")  # 图片在前
    AFTER = (1, "第一个输入元素在后/在下")  # 文字在前

PositionAlign

Bases: ChoiceEnum

两个元素的对齐方式

Source code in imgprocessor/enums.py
86
87
88
89
90
91
92
93
94
class PositionAlign(ChoiceEnum):
    """两个元素的对齐方式"""

    TOP = (0, "水平上对齐")
    HORIZONTAL_CENTER = (1, "水平居中对齐")
    BOTTOM = (2, "水平下对齐")
    LEFT = (3, "垂直左对齐")
    VERTIAL_CENTER = (4, "垂直居中对齐")
    RIGHT = (5, "垂直右对齐")

ImageFormat

Bases: ChoiceEnum

图像转换的格式

Source code in imgprocessor/enums.py
 6
 7
 8
 9
10
11
class ImageFormat(ChoiceEnum):
    """图像转换的格式"""

    JPEG = ("JPEG", "JPEG")
    PNG = ("PNG", "PNG")
    WEBP = ("WEBP", "WebP")