This is a read-only version of imagej.net, available during the transition to the new website, which you can preview here.
Please direct any questions or issues to this Image.sc Forum thread.
Thank you for your patience as we improve the website!

ImageJ1-ImageJ2 cheat sheet

This page summarizes translation of basic operations of ImageJ1 and ImageJ2 API. Based on the work of Robert Haase, Scientific Computing Facility, MPI-CBG Dresden.

Task ImageJ1 ImageJ2
Starting ImageJ
new ij.ImageJ();
ImageJ ij = new net.imagej.ImageJ();
ij.ui().showUI();
Show images imp is an ImagePlus object
imp.show()
ij.ui().show(imp);
ImageJFunctions.show(imp);
ImageJFunctions.wrap(imp,"Image").show();
Retrieve an active image object
ImagePlus imp = IJ.getImage();
Script parameter (the same for Dataset, ImagePlus, etc.):
#@ Img image

In Java code:

@Parameter
private Img image;

Using ImageDisplayService:

Dataset image = ij.imageDisplay().getActiveDataset();
Open an image file IJ.openImage() returns an ImagePlus object without showing.
ImagePlus imp = IJ.openImage(urlOrFilePath);
imp.show();

IJ.open() automatically shows the image without returning ImagePlus.

IJ.open(urlOrFilePath);
ImagePlus imp = IJ.getImage();
Using IOService:
Object image = ij.io().open(urlOrFilePath);

Using DatasetIOService (for type safety):

Dataset image = ij.scifio().datasetIO().open(urlOrFilePath);
Save an image file
IJ.saveasTiff(imp, "/path/to/image.tif")
Using IOService:
ij.io().save(dataset, "/path/to/image.tif");

Using DatasetIOService:

ij.scifio().datasetIO().save(dataset, "/path/to/image.tif");
Convert image types Convert from ImageJ2 Img object to ImageJ1 ImagePlus object:
ImagePlus imp = ImageJFunctions.wrap(img,"Title");
Convert from ImageJ1 ImagePlus object to ImgLib2 Img object:
Img<T> realImg = ImageJFunctions.wrapReal(imp);
Img<FloatType> floatImg = ImageJFunctions.convertFloat(imp);
Img<FloatType> realImg2 = ImageJFunctions.wrap(imp);
Show regions
imagePlus.setRoi(roi)
Img<BitType> mask; // = ...
ImagePlus maskImp =ImageJFunctions.wrap(mask, "mask");
// threshold the mask to get an ROI
ImageProcessor imageProcessor = maskImp.getProcessor();
imageProcessor.setThreshold(128,128,ImageProcessor NO_LUT_UPDATE);
Roi roi = new ThresholdToSelection().convert(imageProcessor);
imagePlus.setRoi(roi);
Run plugins
IJ.run(imagePlus,"Normalisation","");
ij.command().run(ImageNormalizerIJ2Plugin.class, true, "input", img, "ij", ij);
Define plugins
public class ImageNormalizerPlugin implements PluginFilter {
  ...
}

In resources/plugins.config:

Plugins>Filtering, "Normalisation", NormalizerPlugin
@Plugin(type = Command.class, menuPath = "Plugins>Normalization")
public class ImageNormalizerIJ2Plugin implements Command {
  ...
}


See also

https://github.com/mpicbg-scicomp/ij2course-images/blob/master/slides/ij_legacy_cheetsheet.pdf