// Example ImageJ scripts using the BeanShell interpreter // from www.beanshell.org. Requires ImageJ v1.17s, which adds the // IJ.run() method for running ImageJ commands in the current // thread // Use "java -cp ij.jar;bsh-1.0.jar bsh.Console" to start BeanShell // and try pasting, one at a time, the following commands and methods // into the BeanShell console. Requires JDK 1.2 or JDK 1.3 and // both bsh-1.0.jar and ij.jar must be in the current directory. new ij.ImageJ(null); // start ImageJ ij.IJ.run("Blobs (25K)"); // open the "Blobs" sample image macro1() { ij.ImagePlus imp = ij.WindowManager.getCurrentImage(); if (imp==null) { ij.IJ.error("No images are open"); return; } for (int i=0; i<10; i++) { ij.IJ.run("Invert"); ij.IJ.wait(100); } for (int i=0; i<5; i++) { ij.IJ.run("Sharpen"); ij.IJ.wait(200); } ij.IJ.run("Revert"); ij.IJ.wait(200); ij.IJ.run("Find Edges"); ij.IJ.wait(1000); ij.IJ.run("Undo"); ij.IJ.wait(10); } macro1(); // runs macro1 macro2() { imp = ij.WindowManager.getCurrentImage(); if (imp==null) { ij.IJ.error("No images are open"); return; } ip = imp.getProcessor(); width = ip.getWidth(); height = ip.getHeight(); factor = 2.0; ij.IJ.write(width+" "+height); ip.snapshot(); ip.setInterpolate(false); for (int i=0; i<7; i++) { ip2 = ip.resize((int)(width/factor), (int)(height/factor)); x = 0; y = 0; do { ip.insert(ip2, (int)x, (int)y); x += width/factor; if (x >= width) { x = 0; y += height/factor; } } while (y<height); imp.updateAndDraw(); ij.IJ.wait(100); } ip.reset(); imp.updateAndDraw(); } macro2(); // runs macro2