| 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 |