yum install gd-devel

apt-get install libgd2-xpm libgd2-xpm-dev


重新编译,在原有模块上添加一行--with-http_image_filter_module

./configure   ......   --with-http_image_filter_module


配置:

location ~* (.*\.(jpg|gif|png))!(.*)!(.*)$ {  
    set $width   $3;  
    set $height  $4;  
    rewrite "(.*\.(jpg|gif|png))(.*)$" $1;  
}  
  
location ~* /image/.*\.(jpg|gif|png)$ {  
    root   /home/jfy/web/;  
    #image_filter off;  
    #image_filter test;  
    #image_filter size;  
    #image_filter rotate 90;  
    image_filter resize $width $height;  
    #image_filter crop 300 200;  
    image_filter_buffer 10M;  
    image_filter_interlace on;  
    image_filter_jpeg_quality 95;  
    image_filter_sharpen 100;  
    image_filter_transparency on;  
}


说明:

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通道总是保留透明度。


几个规则,可能有用。

匹配全站所有的结尾图片  
---------------------------------------------------------  
        location ~* \.(jpg|gif|png)$ {  
            image_filter resize 500 500;  
        }  
---------------------------------------------------------  
  
匹配某个目录所有图片  
---------------------------------------------------------  
        location ~* /image/.*\.(jpg|gif|png)$ {  
            image_filter resize 500 500;  
        }  
---------------------------------------------------------  
  
再比如用url来指定  
---------------------------------------------------------  
        location ~* (.*\.(jpg|gif|png))!(.*)!(.*)$ {  
            set $width      $3;  
            set $height     $4;  
            rewrite "(.*\.(jpg|gif|png))(.*)$" $1;  
        }  
          
        location ~* /image/.*\.(jpg|gif|png)$ {  
            image_filter resize $width $height;  
        }  
---------------------------------------------------------  
http://172.16.18.114/image/girl.jpg!300!200  
自动将原图缩放为300*200的尺寸


假设你的图片位于/img目录下

访问缩略图方式

http://www.xxx.cn/img/9GUMJR7200AJ0003_90x90.jpg

访问原图方式

http://www.xxx.cn/img/9GUMJR7200AJ0003_90x0.jpg

http://www.xxx.cn/img/9GUMJR7200AJ0003_0x50.jpg

http://www.xxx.cn/img/9GUMJR7200AJ0003_0x0.jpg

http://www.xxx.cn/img/9GUMJR7200AJ0003.jpg

添加如下配置到server上下文即可

location ~* /img/(.+)_(d+)x(d+).(jpg|gif|png)$ {      
     set $h $2;
     set $w $3;
     if ($h = "0") {
       rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last;
     }
     if ($w = "0") {
       rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last;
     }
 
     #根据给定的长宽生成缩略图
     image_filter resize $h $w;
     #原图最大2M,要裁剪的图片超过2M返回415错误,需要调节参数image_filter_buffer 
     image_filter_buffer 2M;             
      
     #error_page 415       /img/notfound.jpg;
     try_files /img/$1.$4 /img/notfound.jpg; 
   }
 
   location ~* /img {
      
   }
 
   location ~* /img/(.+)_(d+)x(d+).(jpg|gif|png)$ {      
     set $h $2;
     set $w $3;
     if ($h = "0") {
       rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last;
     }
     if ($w = "0") {
       rewrite /img/(.+)_(d+)x(d+).(jpg|gif|png)$ /img/$1.$4 last;
     }
 
     #根据给定的长宽生成缩略图
     image_filter resize $h $w;
     #原图最大2M,要裁剪的图片超过2M返回415错误,需要调节参数image_filter_buffer 
     image_filter_buffer 2M;             
      
     #error_page 415       /img/notfound.jpg;
     try_files /img/$1.$4 /img/notfound.jpg; 
   }
 
   location ~* /img {
      
   }


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回