• 面临的问题
  1. 网站需求变更,需要更多不同尺寸的缩略图

  2. 有些图片的缩略图很少使用到,但还是存在了硬盘上,造成空间浪费

  • 解决方法

Nginx搭配Lua模块,如果访问的图片不存在,则调用GraphicsMagick的命令行实时生成指定尺寸的图片。

-集成了Lua模块的Nginx项目OpenResty

-GraphicsMagick的安装和使用

-具体使用方法

原始图片地址:

/images/f47aa98b47b4b7bd.jpg

自定义图片尺寸:

/images/f47aa98b47b4b7bd_40x40.jpg

配置文件中可以写成这样

location ~ '/images/([0-9a-z]+)_([0-9]+)x([0-9]+).jpg$' {root /home/images;set $image_root =  '/home/images';set $fileName = ngx.arg[1];set $width = ngx.arg[2];set $height = ngx.arg[3];set $origin = $image_root/$fileName.jpgset $file = $image_root/$fileName_$widthx$height.jpgif (!-f $file) {rewrite_by_lua 'local command = "gm convert "..ngx.var.origin.." -thumbnail "..ngx.var.width.."x"..ngx.var.height.." "..ngx.var.file;os.execute(command);';}

这样就能简单的生成图片指定尺寸的缩略图了。