nginx模块 ngx_http_image_filter_module

2018-07-18 08:46:34

ngx_http_image_filter_module 模块可以实现图片尺寸的裁剪、缩放和旋转。支持的格式有jpeg、gif、png、webp。其中对动态gif图片支持的不太好,裁剪缩放会使动画失效。webp格式的图片需要新版的 libgd 库支持,并且编译的时候加上对webp的支持。

1.首先我们下载最新版的 libgd,解压后开始configure。

./configure

看到结果如下。

Support for Zlib:                 yes
Support for PNG library:          yes
Support for JPEG library:         yes
Support for WebP library:         no
Support for TIFF library:         no
Support for Freetype 2.x library: yes
Support for Fontconfig library:   yes
Support for Xpm library:          yes
Support for liq library:          no
Support for pthreads:             yes

证明系统不支持webp,必须安装 webp 开发库。

yum install libwebp-devel

此时再编译,就可以看到已支持 webp。

Support for Zlib:                 yes
Support for PNG library:          yes
Support for JPEG library:         yes
Support for WebP library:         yes
...
make

编译后我们把 生成的 libgd.so 动态库拷贝到库默认路径即可,我的是centos7 64位。

cp src/.libs/libgd.so.3.0.5 /usr/lib64/
cd /usr/lib64
ln -sf libgd.so.3.0.5 libgd.so

然后我们对 nginx 进行编译的时候就会看到已经支持 webp。

./configure --prefix=/usr/local/nginx --with-http_image_filter_module
checking for PCRE library ... found
checking for PCRE JIT support ... found
checking for zlib library ... found
checking for GD library ... found
checking for GD WebP support ... found
creating objs/Makefile


Syntax:	image_filter off;
image_filter test;
image_filter size;
image_filter rotate 90 | 180 | 270;
image_filter resize width height;
image_filter crop width height;
Default: image_filter off;
Context: location

test  测试访问的是否为 JPEG, GIF, PNG, WebP格式图片,否则报 415。

size  返回 json 格式如,出错返回 {}。

{ "img" : { "width": 100, "height": 100, "type": "gif" } }

rotate 90|180|270  用来旋转图片,可以配合 resize 或 crop使用。

resize w h  缩放图片,只指定1个参数另一个可以用 - 代替,参数值支持变量。以最小边为准,保持图片比例。

crop w h  裁剪图片,以最大边按比例缩放后进行裁剪,不保持原始比例。

Syntax:	image_filter_buffer size;
Default: image_filter_buffer 1M;
Context: http, server, location

设置读取图片的最大缓冲区大小,超过了会报415错误。

Syntax:	image_filter_jpeg_quality quality;
Default: image_filter_jpeg_quality 75;
Context: http, server, location

设置 jpeg 图片的质量 1-100。

Syntax:	image_filter_sharpen percent;
Default: image_filter_sharpen 0;
Context: http, server, location

对话图片,0-100。

Syntax:	image_filter_transparency on|off;
Default: image_filter_transparency on;
Context: http, server, location

当转换 gif 或 png 时,是否保持背景的透明度。

Syntax:	image_filter_webp_quality quality;
Default: image_filter_webp_quality 80;
Context: http, server, location

设置webp图片的质量,0-100。

配置例子

假设我们请求一张 200*400 的图片。

#10*20
image_filter resize 10 30;

#4*8
image_filter resize 10 8;

#100*200
image_filter resize 100 -;
#10*30
image_filter crop 10 30;

#100*200
image_filter crop 100 -;

#200*400
image_filter crop 1000 30;


 备注

1.测试环境centos7 64位,nginx版本为 1.14.0。
2.读者也可以参考官方文档 nginx documentation
3..原文地址http://www.freecls.com/a/2712/c0


©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。