Class RecyclingTileFactory

Object
Observable
RecyclingTileFactory
All Implemented Interfaces:
Observer, TileFactory, TileRecycler

public class RecyclingTileFactory extends Observable implements TileFactory, TileRecycler, Observer
A simple implementation of TileFactory wherein the tiles returned from createTile() attempt to re-use primitive arrays provided by the TileRecycler method recycleTile().

A simple example of the use of this class is as follows wherein image files are read, each image is filtered, and each output written to a file:

 String[] sourceFiles; // source file paths
 KernelJAI kernel; // filtering kernel

 // Create a RenderingHints object and set hints.
 RenderingHints rh = new RenderingHints(null);
 RecyclingTileFactory rtf = new RecyclingTileFactory();
 rh.put(JAI.KEY_TILE_RECYCLER, rtf);
 rh.put(JAI.KEY_TILE_FACTORY, rtf);
 rh.put(JAI.KEY_IMAGE_LAYOUT, new ImageLayout().setTileWidth(32).setTileHeight(
                32));

 int counter = 0;

 // Read each image, filter it, and save the output to a file.
 for (int i = 0; i < sourceFiles.length; i++) {
        PlanarImage source = JAI.create("fileload", sourceFiles[i]);
        ParameterBlock pb = (new ParameterBlock()).addSource(source).add(kernel);

        // The TileFactory hint will cause tiles to be created by 'rtf'.
        RenderedOp dest = JAI.create("convolve", pb, rh);
        String fileName = "image_" + (++counter) + ".tif";
        JAI.create("filestore", dest, fileName);

        // The TileRecycler hint will cause arrays to be reused by 'rtf'.
        dest.dispose();
 }
 
In the above code, if the SampleModel of all source images is identical, then data arrays should only be created in the first iteration.
Since:
JAI 1.1.2
  • Constructor Details

    • RecyclingTileFactory

      public RecyclingTileFactory(Observable tileCache)
      Constructs a RecyclingTileFactory.
  • Method Details

    • canReclaimMemory

      public boolean canReclaimMemory()
      Returns true.
      Specified by:
      canReclaimMemory in interface TileFactory
    • isMemoryCache

      public boolean isMemoryCache()
      Returns true.
      Specified by:
      isMemoryCache in interface TileFactory
    • getMemoryUsed

      public long getMemoryUsed()
      Specified by:
      getMemoryUsed in interface TileFactory
    • flush

      public void flush()
      Specified by:
      flush in interface TileFactory
    • createTile

      public WritableRaster createTile(SampleModel sampleModel, Point location)
      Specified by:
      createTile in interface TileFactory
    • recycleTile

      public void recycleTile(Raster tile)
      Recycle the given tile.
      Specified by:
      recycleTile in interface TileRecycler
    • update

      public void update(Observable o, Object arg)
      Specified by:
      update in interface Observer