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