#!/usr/bin/pike /* * cropper.pike * * Crom a NxM+i+j pngs into another png * * History: * 28/09/2020 Creation from tiler.pike * * Author: Dario Rodriguez dario@softhome.net * This program is distributed under the terms of the GNU GPL v2.1+ */ int main(int argc, array(string) argv) { int xsize,ysize,xoff,yoff; string infilename; string destfilename; Image.Image result; if(argc<4 || (argc>1 && argv[1]=="--help")) { Stdio.werror("Syntax: "+argv[0]+" <crop_expression> <infile.png> <outfile.png>\n"); Stdio.werror("Example: "+argv[0]+" 200x300+50+20 file.png dest.png\n"); Stdio.werror("Example result: dest.png\n"); return(1); } write("* Cropping to "+argv[1]+"\n"); xsize=ysize=xoff=yoff; xsize=(int) (argv[1]/"x")[0]; if(sizeof(argv[1]/"x")>1) ysize=(int) (((argv[1]/"x")[1])/"+")[0]; if(sizeof(argv[1]/"+")>1) xoff=(int) (argv[1]/"+")[1]; if(sizeof(argv[1]/"+")>2) yoff=(int) (argv[1]/"+")[2]; infilename=argv[2]; destfilename=argv[3]; result=Image.load(infilename)->copy(xoff,yoff,xoff+xsize-1,yoff+ysize-1,255,255,255); write("* Writing "+destfilename+"...\n"); Stdio.write_file(destfilename,Image.PNG.encode(result)); write("* Finished successfully\n"); return(0); }