diff options
Diffstat (limited to 'html/examples/multicrop_gif.lua')
-rw-r--r-- | html/examples/multicrop_gif.lua | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/html/examples/multicrop_gif.lua b/html/examples/multicrop_gif.lua new file mode 100644 index 0000000..0a519d3 --- /dev/null +++ b/html/examples/multicrop_gif.lua @@ -0,0 +1,69 @@ +-- lua multicrop_gif.lua 60 60 0 0 newfile.gif DSC003*.jpg + +require"imlua" +require"imlua_process" + +err_msg = { + "No error.", + "Error while opening the file.", + "Error while accessing the file.", + "Invalid or unrecognized file format.", + "Invalid or unsupported data.", + "Invalid or unsupported compression.", + "Insuficient memory", + "Interrupted by the counter", +} + +-- Margin parameters +x1 = arg[1] +x2 = arg[2] +y1 = arg[3] +y2 = arg[4] +new_filename = arg[5] +filename1 = arg[6] +if (not x1 or not x2 or not y1 or not y2 or not new_filename or not filename1) then + print("Must have the rectangle coordinates and at least one file name as parameters.") + print(" Can have more than one file name as parameters and can use wildcards.") + print(" Usage:") + print(" lua multicrop.lua x1 x2 y1 y2 new_filename filename1 filename2 ...") + return +end + +print(">>> Crop of multiple images <<<") + +function ProcessImageFile(file_name, ifile) + print("Loading File: "..file_name) + local image, err = im.FileImageLoad(file_name); + if (err and err ~= im.ERR_NONE) then + error(err_msg[err+1]) + end + + local new_image = im.ProcessCropNew(image, x1, image:Width()-1-x2, y1, image:Height()-1-y2) + local map_image = im.ImageCreateBased(new_image, nil, nil, im.MAP, im.BYTE) + im.ConvertColorSpace(new_image, map_image) + ifile:SaveImage(map_image) + + map_image:Destroy() + new_image:Destroy() + image:Destroy() +end + +ifile = im.FileNew(new_filename, "GIF") + +ifile:SetAttribute("Delay", im.USHORT, {30}) -- Time to wait betweed frames in 1/100 of a second. +ifile:SetAttribute("Iterations", im.USHORT, {0}) -- The number of times to repeat the animation. 0 means to repeat forever. + +file_count = 0 +for index,value in ipairs(arg) do + if (index > 5) then + ProcessImageFile(arg[index], ifile) + file_count = file_count + 1 + end +end + +ifile:Close() + +if (file_count > 1) then + print("Processed "..file_count.." Files.") +end +print("Saved File: "..new_filename) |