Nginx
图片处理需要用到ngx_http_image_filter_module
模块(0.7.54+),该模块可以对JPEG
、GIF
、PNG
或WebP
格式的图片文件进行动态旋转、比例缩放及裁剪。
ngx_http_image_filter_module
模块不是默认构建的,需要通过 --with-http_image_filter_module
配置参数启用。此模块使用libgd
库。建议使用该库的最新版本。WebP
格式支持出现在 1.11.6
版本中。要转换这种格式的图像,libgd
库必须在编译时包含 WebP
支持。
image_filter
image_filter
用于设置对图像执行的转换类型。
语法:
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;
默认值:image_filter off;
作用域:location
参数值说明:
参数名 | 参数值选项 | 参数说明 |
---|---|---|
off | 关闭图片处理功能 | |
test | 确保响应是 JPEG 、GIF 、PNG 或 WebP 格式的图像。否则,将返回 415 状态码(不支持的媒体类型)。 | |
size | 以 JSON 格式输出有关图像的信息,例如:{ "img" : { "width": 100, "height": 100, "type": "gif" } } ;如果发生错误,输出如下:{} | |
rotate | 90|180|270 | 按指定度数逆时针旋转图像。参数值可以包含变量。此模式可以单独使用,也可以与 resize 和crop 一起使用。 |
resize | width height | 以最小边按比例将图片缩放到指定大小,保持图片比例。参数值可以包含变量,如果发生错误,将返回415状态码。与rotate 参数一起使用时,旋转发生在resize 之后。 |
crop | width height | 以最大边按比例缩放后以最小边进行裁剪,不保持图片比例。参数值可以包含变量,如果发生错误,将返回415状态码。与rotate 参数一起使用时,旋转发生在crop 之前。 |
示例配置:
location /img/ {
proxy_pass http://backend;
image_filter resize 150 100;
image_filter rotate 90;
error_page 415 = /empty;
}
location = /empty {
empty_gif;
}
image_filter_buffer
设置图片处理缓冲区的大小,超过设定值时将返回错误状态码415
。
语法:image_filter_buffer size;
默认值:image_filter_buffer 1M;
作用域:http
、server
、location
image_filter_interlace
图片交错加载指令,将图片转换为交错格式输出。对于JPEG
图片将转换为渐进式格式。
语法:image_filer_interlace on|off;
默认值:image_filer_interlace off;
作用域:http
、server
、location
image_filter_jpeg_quality
设置转换后的JPEG
图像的期望质量,值范围为1~100
。较小的值通常意味着较低的图像质量和较少的数据传输。建议的最大值为95。参数值可以包含变量。
语法:image_filter_jpeg quality;
默认值:image_filter_jpeg_quality 75;
作用域:http
、server
、location
image_filter_shapen
图片锐化指令,设置是否对图片进行锐化处理,指令值可以超过100,0表示禁用锐化。参数值可以包含变量。
语法:image_filter_sharpen percent;
默认值:image_filter_sharpen 0;
作用域:http
、server
、location
image_filter_transparency
图片背景指令,设置对GIF
或者PNG
图片进行处理时是否应保留透明度,透明度的丧失可使图像质量更好。PNG
中的 alpha
通道透明度始终保留。
语法:image_filter_transparency on|off;
默认值:image_filter_transparency on;
作用域:http
、server
、location
image_filter_webp_quality
WebP
图片质量指令,设置转换后的WebP
图像的期望质量。值范围为1~100
。较小的值通常意味着较低的图像质量和较少的数据传输。参数值可以包含变量。
语法:image_filter_webp_quality quality;
默认值:image_filter_webp_quality 80;
作用域:http
、server
、location
location ~* \.(jpg|jpeg|png|gif|webp)$ {
image_filter_buffer 20M;
image_filter_interlace on;
image_filter resize $arg_width $arg_height;
image_filter_jpeg_quality 90;
expires 30d;
}