Browse code

Initial commit

Dario Rodriguez authored on 28/10/2020 22:49:01
Showing 1 changed files
1 1
new file mode 100755
... ...
@@ -0,0 +1,44 @@
1
+#!/usr/bin/pike
2
+/*
3
+ * cropper.pike
4
+ *
5
+ * Crom a NxM+i+j pngs into another png
6
+ *
7
+ * History:
8
+ *      28/09/2020 Creation from tiler.pike
9
+ *
10
+ * Author: Dario Rodriguez dario@softhome.net
11
+ * This program is distributed under the terms of the GNU GPL v2.1+
12
+ */
13
+
14
+int
15
+main(int argc, array(string) argv)
16
+{
17
+	int xsize,ysize,xoff,yoff;
18
+        string infilename;
19
+        string destfilename;
20
+        Image.Image result;
21
+        if(argc<4 || (argc>1 && argv[1]=="--help")) {
22
+                Stdio.werror("Syntax:  "+argv[0]+" <crop_expression> <infile.png> <outfile.png>\n");
23
+                Stdio.werror("Example: "+argv[0]+" 200x300+50+20 file.png dest.png\n");
24
+                Stdio.werror("Example result: dest.png\n");
25
+                return(1);
26
+        }
27
+        write("* Cropping to "+argv[1]+"\n");
28
+	xsize=ysize=xoff=yoff;
29
+	xsize=(int) (argv[1]/"x")[0];
30
+	if(sizeof(argv[1]/"x")>1)
31
+		ysize=(int) (((argv[1]/"x")[1])/"+")[0];
32
+	if(sizeof(argv[1]/"+")>1)
33
+		xoff=(int) (argv[1]/"+")[1];
34
+	if(sizeof(argv[1]/"+")>2)
35
+		yoff=(int) (argv[1]/"+")[2];
36
+        infilename=argv[2];
37
+        destfilename=argv[3];
38
+	result=Image.load(infilename)->copy(xoff,yoff,xoff+xsize-1,yoff+ysize-1,255,255,255);
39
+	write("* Writing "+destfilename+"...\n");
40
+        Stdio.write_file(destfilename,Image.PNG.encode(result));
41
+	write("* Finished successfully\n");
42
+        return(0);
43
+}
44
+