diff options
| -rw-r--r-- | html/examples/multicrop_gif.lua | 69 | ||||
| -rw-r--r-- | src/lua5/im_image.lua | 2 | 
2 files changed, 70 insertions, 1 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) diff --git a/src/lua5/im_image.lua b/src/lua5/im_image.lua index 03e80f6..5eb9fd4 100644 --- a/src/lua5/im_image.lua +++ b/src/lua5/im_image.lua @@ -17,7 +17,7 @@ function im.ImageCreateBased(image, width, height, color_space, data_type)    if type(data_type)   == "function" then   data_type = data_type(image) end        -- create a new image                                                            -  new_image = im.ImageCreate(width, height, color_space, data_type)                +  local new_image = im.ImageCreate(width, height, color_space, data_type)                   image:CopyAttributes(new_image)                                                     if (image:HasAlpha()) then new_image:AddAlpha() end    return new_image                                                                 | 
