2012-08-01 - Loading and displaying a dataset with the ImageJ2 API

Recently, someone someone asked on the mailing list how to load and display a dataset using the ImageJ2 API. Here is code that does so:

import imagej.ImageJ;
import imagej.data.Dataset;
import imagej.display.DisplayService;
import imagej.io.IOService;

import java.io.File;

public class DisplayDataset {

	public static void main(final String[] args) throws Exception {
		final ImageJ context = ImageJ.createContext();

		final File file = new File("/path/to/data-file.tif");

		// load the dataset
		final IOService ioService = context.getService(IOService.class);
		final Dataset dataset = ioService.loadDataset(file.getAbsolutePath());

		// display the dataset
		final DisplayService displayService =
			context.getService(DisplayService.class);
		displayService.createDisplay(file.getName(), dataset);
	}

}

We have published this code as an ImageJ tutorial.

For this to work, you will need to add compile-time dependencies to ij-core, ij-data and ij-io, as well as a runtime dependency to your user interface of choice (e.g., ij-ui-swing). If you don't add the UI JAR dependency, nothing will be displayed, because ImageJ2 won't know how to do it! See the tutorial code's pom.xml for details.

Note that as of this writing, there is a bug with the Swing SDI user interface (and maybe other UIs) that causes the display to initially appear white. Hit minus (-) and then plus (+), which will zoom out then back in, to force the image window to repack and redraw.