summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscuri <scuri>2009-08-19 19:20:32 +0000
committerscuri <scuri>2009-08-19 19:20:32 +0000
commitb2f636ebb0665e733d91c70ed5250b1ae8d4a511 (patch)
treed3f4a4026cf59eafccc3805c8de3b918d58c259d
parent43522c5f2a12dc0cf3cda733e4fb5c04cd62a154 (diff)
*** empty log message ***
-rw-r--r--html/examples/multicrop_gif.lua69
-rw-r--r--src/lua5/im_image.lua2
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