Page history Edit this page How do I edit this website?

Development

If your goal is to automate the behavior of ImageJ, consider writing a script using ImageJ”s Script Editor—it is often much simpler than a plugin in Java.


This page provides an overview of ImageJ from the perspective of software development: how to use it from your programs, as well as how to modify or extend its capabilities via plugins.

Quick start

What is ImageJ?

An end-user software application

Reusable software libraries

public void loadAndDisplay(File file) {
    ImageJ ij = new ImageJ();
    Object data = ij.io().open(file);
    ij.ui().show(data);
}

An extensible collection of plugins and services

"Write once, run anywhere" image processing routines

Project structure

ImageJ is divided into three parts:

ImageJ

Image-specific components

ImgLib2

Core image data model

  • Extensible pixel types – not just uint8, uint16, float32
  • Extensible data sources – not just files on disk
  • Extensible sample organizations – not just arrays
  • Extensible dimensionality – not just X, Y, Z and time
  • Interface-driven design

More general than images

  • Application container
  • Plugin framework
  • Module framework
  • Display and UI frameworks
  • Scripting framework and plugins

For full details on the technical structure of ImageJ, see the Architecture page.

Key developer tools

There are four indispensable software development tools on which ImageJ relies:

GitHub

A website which hosts all of ImageJ's source code and issue trackers. GitHub is ImageJ's nexus of online collaboration (i.e., "social coding").

Git

A first-class distributed version control system. Git saves "snapshots" of the source code, keeping a history of changes.

Maven

A build automation tool with great dependency management. Maven converts source code into program binaries, and much more.

Eclipse

An integrated development environment (IDE) used by many ImageJ developers. Eclipse makes it much easier to explore and edit the source code.
Although: ImageJ can be developed using any IDE which supports Maven.

See the Project management page for further details.

Source code

ImageJ and related SciJava software projects are open source. The code is organized into well-separated projects.

See the source code page for further details.

Tutorials

Start with the ImageJ tutorial notebooks!

Learning the ImageJ API

ImageJ plugins

The Fiji distribution of ImageJ