nginx_lua 按需裁图程序,nginx_lua裁图程序
nginx_lua 按需裁图程序,nginx_lua裁图程序
首先安装openresty, 449 tar -zxvf ngx_openresty-1.0.9.10.tar.gz 451 cd ngx_openresty-1.0.9.10 456 ./configure --prefix=/usr/local/nginx_openresty --with-luajitmakemake install然后在nginx.conf 里配置如下location,但是要记得把user root; 这个打开,在nginx.conf的第一行,要不是裁不了图片的。
location /images/ { set $image_root /home/tomcat/eisp-files; set $file "$image_root$uri"; if (!-f $file) { rewrite_by_lua ' local index = string.find(ngx.var.uri, "([0-9]+)x([0-9]+)"); local originalUri = string.sub(ngx.var.uri, 0, index-2); local area = string.sub(ngx.var.uri, index); index = string.find(area, "([.])"); area = string.sub(area, 0, index-1); local image_sizes = {"80x80", "800x600", "40x40"}; function table.contains(table, element) for _, value in pairs(table) do if value == element then return true end end return false end if table.contains(image_sizes, area) then local command = "gm convert " .. ngx.var.image_root .. originalUri .. " -thumbnail " .. area .. " -background gray -gravity center -extent " .. area .. " " .. ngx.var.file; os.execute(command); else ngx.exit(404); end; '; } alias /home/tomcat/eisp-files/images/; expires 7d; }
访问 http://XXXX:8099/images/Img4911200_n.jpg.80x80.jpg
又做了的大视野:
url:http://XXXX:8099/pic/new/f/60/13/Img4911360_f.jpg.800x600.jpg
location /pic/ { set $image_root /data/2008image; set $file "/home$uri"; if (!-f $file) { rewrite_by_lua ' local index = string.find(ngx.var.uri, "([0-9]+)x([0-9]+)"); local originalUri = string.sub(ngx.var.uri, 0, index-2); local area = string.sub(ngx.var.uri, index); index = string.find(area, "([.])"); area = string.sub(area, 0, index-1);
local t = 0; local i = 0; while true do i = string.find(ngx.var.file, "/", i+1); if i == nil then break end; t = i; end
local ss = string.sub(ngx.var.file,0,t); local tmp = "mkdir -p " .. ss; os.execute(tmp); local image_sizes = {"80x80", "800x600", "40x40"}; function table.contains(table, element) for _, value in pairs(table) do if value == element then return true end end return false end if table.contains(image_sizes, area) then local command = "gm convert " .. ngx.var.image_root .. originalUri .. " -thumbnail " .. area .. " -background gray -gravity center -extent " .. area .. " " .. ngx.var.file; os.execute(command); else ngx.exit(404); end; '; } alias /home/pic/; expires 7d; }
评论暂时关闭