Dear all,
what is the easiest way to use the Bio-Formats Importer in a thread-safe way within Javascript? I would like to have something like the following macro, but save the ImagePlus in a variable imp for further processing. So I'm looking for the equivalent of imp = IJ.openImage() for Bio-Formats. See the code examples for details. Thanks for your help, Jan // ImageJ macro code dir1 = getDirectory("Choose Source Directory "); dir2 = getDirectory("Choose Destination Directory "); list = getFileList(dir); for (i=0; i<list.length; i++) { if (endsWith(list[i], ".zvi")) { run("Bio-Formats Importer", "open=" + dir1 + list[i] + "autoscale color_mode=Default view=Hyperstack stack_order=XYCZT"); // process the image saveAs("TIFF", dir2+list[i]); close(); } } I would have Javascript like: // Javascript code var dir1 = IJ.getDirectory("Choose Source Directory "); var dir2 = IJ.getDirectory("Choose Destination Directory "); var list = array(); // how do I get the file list of a directory in JS? for (var i=0; i<list.length; i++) { // var imp = IJ.openImage(dir1 + list[i]); // here, instead of openImage, use Bio-Formats IJ.run("Bio-Formats Importer", "open=" + dir1 + list[i] + "autoscale color_mode=Default view=Hyperstack stack_order=XYCZT"); var imp = WindowManager.getCurrentImage(); // process the image by using IJ.run(imp, "command"); IJ.save(imp, dir2 + list[i] + ".tif"); } |
Hi Jan,
what is the easiest way to use the Bio-Formats Importer in a thread-safe > way within Javascript? I would like to have something like the following > macro, but save the ImagePlus in a variable imp for further processing. > So I'm looking for the equivalent of imp = IJ.openImage() for Bio-Formats. > The Bio-Formats Importer now has a high-level Java API (and hence Javascript API) for invoking it. Try this: String id = "/path/to/myFile.ext"; ImagePlus[] imps = BF.openImagePlus(id); This imports the file with the last-used importer options. If you need more control over the options, you can instead write: String id = "/path/to/myFile.ext"; ImporterOptions options = new ImporterOptions(); options.setId(id); options.setAutoscale(true); options.setCrop(true); options.setCropRegion(0, new Region(x, y, w. h)); options.setColorMode(ImporterOptions.COLOR_MODE_COMPOSITE); //...etc. ImagePlus[] imps = BF.openImagePlus(options); This code should be adaptable to Javascript with minimal modifications. As for thread safety, we have not heavily tested it in a multi-threaded context, but I don't know of any obvious roadblocks to it working. Let us know how it goes! Regards, Curtis On Mon, May 16, 2011 at 9:59 AM, Jan Eglinger <[hidden email]>wrote: > Dear all, > > what is the easiest way to use the Bio-Formats Importer in a thread-safe > way within Javascript? I would like to have something like the following > macro, but save the ImagePlus in a variable imp for further processing. > So I'm looking for the equivalent of imp = IJ.openImage() for Bio-Formats. > > See the code examples for details. > > Thanks for your help, > Jan > > > // ImageJ macro code > > dir1 = getDirectory("Choose Source Directory "); > dir2 = getDirectory("Choose Destination Directory "); > list = getFileList(dir); > > for (i=0; i<list.length; i++) { > if (endsWith(list[i], ".zvi")) { > run("Bio-Formats Importer", "open=" + dir1 + list[i] + "autoscale > color_mode=Default view=Hyperstack stack_order=XYCZT"); > // process the image > saveAs("TIFF", dir2+list[i]); > close(); > } > } > > > I would have Javascript like: > > // Javascript code > var dir1 = IJ.getDirectory("Choose Source Directory "); > var dir2 = IJ.getDirectory("Choose Destination Directory "); > var list = array(); // how do I get the file list of a directory in JS? > > for (var i=0; i<list.length; i++) { > // var imp = IJ.openImage(dir1 + list[i]); > // here, instead of openImage, use Bio-Formats > IJ.run("Bio-Formats Importer", "open=" + dir1 + list[i] + "autoscale > color_mode=Default view=Hyperstack stack_order=XYCZT"); > var imp = WindowManager.getCurrentImage(); > // process the image by using IJ.run(imp, "command"); > IJ.save(imp, dir2 + list[i] + ".tif"); > } > |
Free forum by Nabble | Edit this page |