thumbnail.lua 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. -- ######################################
  2. -- # Nginx thumbnail module
  3. -- ######################################
  4. local gm_path = "gm convert"
  5. local enabled_default_img = false
  6. local default_img_url = "/default.jpg"
  7. local default_url_reg = "([0-9]+)x([0-9]+)"
  8. local file_exists = function(name)
  9. local f = io.open(name,"r")
  10. if f ~= nil then
  11. io.close(f)
  12. return true
  13. else
  14. return false
  15. end
  16. end
  17. local area = nil
  18. local originalUri = ngx.var.uri;
  19. local originalFile = ngx.var.file;
  20. local index = string.find(ngx.var.uri, default_url_reg);
  21. if index then
  22. originalUri = string.sub(ngx.var.uri, 0, index-2);
  23. area = string.sub(ngx.var.uri, index);
  24. index = string.find(area, "([.])");
  25. area = string.sub(area, 0, index-1);
  26. local index = string.find(originalFile, default_url_reg);
  27. originalFile = string.sub(originalFile, 0, index-2)
  28. end
  29. if area and file_exists(originalFile) then
  30. local command = gm_path .. " " .. originalFile .. " -thumbnail " .. area .. " " .. ngx.var.file;
  31. os.execute(command);
  32. end
  33. if file_exists(ngx.var.file) then
  34. ngx.exec(ngx.var.uri)
  35. else
  36. if enabled_default_img then
  37. ngx.exec(default_img_url)
  38. else
  39. ngx.exit(404)
  40. end
  41. end