Files
resty_functions/scripts/combine.lua
T
2022-08-23 00:32:24 +08:00

54 lines
1.5 KiB
Lua

-- 指定模块引用目录,否则无法加载同目录下的其他文件
--package.path = package.path .. ';/usr/local/opt/openresty/nginx/scripts/?.lua';
package.path = package.path .. ';<SCRIPT_PATH>/?.lua';
local uuid = require "resty.jit-uuid"
local cjson = require "cjson"
local pl = require "pl.pretty"
uuid.seed()
local file_dir = ngx.var.tmp_file_dir
ngx.req.read_body()
local req_body = cjson.decode(ngx.req.get_body_data())
ngx.log(ngx.INFO, 'REQ_BODY -> ', ngx.req.get_body_data())
local data = req_body["payload"]["images"]
local combined_uuid = uuid.generate_v4()
local combined = file_dir .. "/" .. combined_uuid .. ".png";
local len = table.getn(data)
if len == 0 then
ngx.status = 500
ngx.log(ngx.ERR, "No images to combine!")
return ;
end
local origin = {}
-- 从 nginx 变量取
local convert = ngx.var.convert
if not convert then
ngx.status = 500
ngx.log(ngx.ERR, "ImageMagick NOT FOUND.")
return
end
for i = 1, len do
ngx.log(ngx.INFO, "COMBINE FILE -> ", data[i])
origin[i] = file_dir .. "/" .. data[i] .. ".png "
local cmd = convert .. " -resize 1280x " .. data[i] .. " " .. origin[i]
ngx.log(ngx.INFO, 'CMD RESIZE -> ', cmd)
local handle = io.popen(cmd)
local result = handle:read("*a")
ngx.log(ngx.INFO, 'CMD RESIZE -> RESULT ', pl.dump(result))
handle:close()
end
local cmd = convert .. " -append " .. table.concat(origin, " ") .. " " .. combined
ngx.log(ngx.INFO, 'CMD APPEND -> ', cmd)
io.popen(cmd)
ngx.say(combined_uuid)