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;          }  

相关内容

    暂无相关文章