Today, in the java world we can find 5 API to work with images.

  • Java2D BufferedImae

  • ImageIO PlanarImage

  • ImageJ

  • Android BitMap

  • JavaFX Image

Sun build the BufferedImage API with Java 1.2, it is a correct API for 2D images, but still a bit complicate to manipulate. Later on the ImageIO project started to extent this API providing more formats, and more possibilities, unfortunatly the projet stopped and Oracle focused on JavaFX which has a very crude and limited Image API. In fact we can’t do much more then reading/writing casual images with it, it is useless for professional work. Android image API is in the same state as JavaFX, very limited. ImageIO is the only fair solution today but lack a real design, it is more like a set of image processing classes and readers, it also uses a lot of classes from the JVM which makes it unusable on Android.

Images are used in many domains, photography, games, medicine, mapping, meteorology, space and many more. As a result images are not limited to a two dimension rectangle of Red,Green,Blue pixels.

Images can have unique caracteristics :

  • high compression buffers as in DXT

  • billion of samples as in JPEG-2000

  • multi-dimensional grids as in NetCDF

  • mosaics and overviews for fast access as in Tiff

  • high precision values as in HDF

  • not in a grid, as in mathematical formulas

This API try to answer all those needs while remaining friendly.