Files
resty_functions/dev/image_append/image_append.lua
T
2021-08-27 09:30:15 +08:00

59 lines
1.8 KiB
Lua

local uuid = require "resty.jit-uuid"
local cjson = require "cjson"
local json_string = nil
---- Automatic seeding with os.time(), LuaSocket, or ngx.time()
uuid.seed()
uuid()
-- Get post json argv
local arg = ngx.req.get_post_args()
for k,v in pairs(arg) do
ngx.log(ngx.INFO , "Image append [POST] key:", k .." | ".." v:", v)
json_string = v
end
-- Decode json string
local json = cjson.decode(json_string)
ngx.say("Image append input filename number is :" , table.getn(json.data))
local image_append_input_files_number = table.getn(json.data)
for i = 1, image_append_input_files_number do
ngx.log(ngx.INFO , "Image append input filename is :" , json.data[i])
end
-- Image append
---- Upload file save path config in nginx.conf
local save_upload_file_path = ngx.var.store_dir
local append_image_table = {}
local output_image_uuid = uuid.generate_v4();
-- Add path to input image filename
for i = 1, image_append_input_files_number do
append_image_table[i] = save_upload_file_path .. json.data[i] .. " "
ngx.log(ngx.INFO, "Insert append image table "..i.." with "..append_image_table[i])
end
-- Concat input image to a command string
local append_input_images = table.concat(append_image_table)
ngx.log(ngx.INFO , "Input images list : " , append_input_images)
-- Add path to output image filename
local append_output_image = save_upload_file_path .. output_image_uuid..".jpg ";
ngx.log(ngx.INFO , "Output image is : "..append_output_image)
-- Debug
ngx.log(ngx.INFO , '/usr/local/ImageMagick/bin/magick convert -append '..append_input_images..' '..append_output_image)
local call_imagemagick_cmd = io.popen('/usr/local/ImageMagick/bin/magick convert -append '..append_input_images..' '..append_output_image)
local imagemagick_cmd_replay = call_imagemagick_cmd:read("*all")
ngx.log(ngx.INFO , imagemagick_cmd_replay)