网站上常常一张图片,多个地方需要使用不同的尺寸,一般的方案是上传的时候,根据不同的尺寸用程序生成多张图片。
这么做有两个缺点:
1.如果需要新的尺寸图片的话,只能遍历下数据库,重新生成一次图片。
2.图片的尺寸会越来越多,要存的图片也越来越多,仅仅是因为他们的尺寸不同。
nginx有个模块,可以处理此内容,http_image_filter_module,可以重新根据定义的大小来压缩后台代理服务器的原始图片,经测试,效果不错。
此模块默认是不安装的,插件名称http_image_filter_module ,安装nginx的时候,使用--with-http_image_filter_module来进行安装
安装方法,http://mushme.iteye.com/blog/1870080
- server{
- listen 8282;
- server_name simg.frady.info;#小尺寸图片的域名
- root /web/www/ROOT/;
- location /picture/ {#此目录下的图片会被统一裁切
- image_filter test;
- proxy_pass http://img.frady.info;#原始图片的域名
- image_filter resize 60 60;
- # image_filter rotate 90;#旋转90度,这东西实际的使用场景有吗,在页面上旋转图片是用这个做?
- error_page 415 = /nopic.jpg;
- }
- }
- 下面的配置可以反馈图片的信息
- location /picture/ {
- proxy_pass http://img.frady.info;
- image_filter size;
- }
结果如
{ "img" : { "width": 208, "height": 181, "type": "jpeg" } }