需求:根据用户输入的尺寸生成图片(如:50*50  200*150),除了用程序的方法以外还可以使用nginx模块来自动生成。


http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,

可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息。


一,安装

./configure arguments: --prefix=/usr/local/nginx --with-http_image_filter_module

二,使用

location ~* \.(jpg|gif|png)$ {  
  image_filter resize 500 500;  
}#站点所有图片转换成500*500大小


location ~* (.*\.(jpg|gif|png))!(.*)!(.*)$ {
     set $w     $3;
     set $h     $4;
     rewrite (.*\.(jpg|gif|png))!(.*)!(.*)!(.*)$ $1 break;
     image_filter resize $w $h;
}#自定义大小,如,这里生成的图片是按照比例来缩放的

location ~* (.*\.(jpg|gif|png))!(.*)!(.*)$ {
     set $w     $3;
     set $h     $4;
     rewrite (.*\.(jpg|gif|png))!(.*)!(.*)!(.*)$ $1 break;
     image_filter resize $w $h;
     image_filter crop $w $h;
}#自定义大小,裁切指定大小

location ~* (.*\.(jpg|gif|png))!(.*)!(.*)!(.*)$ {
     set $w     $3;
     set $h     $4;
     set $rotate     $5;
     rewrite (.*\.(jpg|gif|png))!(.*)!(.*)!(.*)!(.*)$ $1 break;
     image_filter resize $w $h;
     image_filter crop $w $h;
     image_filter rotate $rotate;
}#裁切并旋转

参数说明
image_filter off;  
#关闭模块  
  
image_filter test;  
#确保图片是jpeg gif png否则返415错误  
  
image_filter size;  
#输出有关图像的json格式:如下显示{ "img" : { "width": 100, "height": 100, "type": "gif" } } 出错显示:{}  
  
image_filter rotate 90|180|270;  
#旋转指定度数的图像,参数可以包括变量,单独或一起与resize crop一起使用。  
  
image_filter resize width height;  
#按比例减少图像到指定大小,公减少一个可以另一个用"-"来表示,出错415,参数值可包含变量,可以与rotate一起使用,则两个一起生效。  
  
image_filter crop width height;  
#按比例减少图像比较大的侧面积和另一侧多余的载翦边缘,其它和rotate一样。没太理解  
  
image_filter_buffer 10M;  
#设置读取图像缓冲的最大大小,超过则415错误。  
  
image_filter_interlace on;  
#如果启用,最终的图像将被交错。对于JPEG,最终的图像将在“渐进式JPEG”格式。  
  
image_filter_jpeg_quality 95;  
#设置变换的JPEG图像的期望质量。可接受的值是从1到100的范围内。较小的值通常意味着既降低图像质量,减少传输数据,推荐的最大值为95。参数值可以包含变量。  
  
image_filter_sharpen 100;  
#增加了最终图像的清晰度。锐度百分比可以超过100。零值将禁用锐化。参数值可以包含变量。  
  
image_filter_transparency on;  
#定义是否应该透明转换的GIF图像或PNG图像与调色板中指定的颜色时,可以保留。透明度的损失将导致更好的图像质量。在PNG的Alpha通道总是保留透明度。