public class RecyclingTileFactory extends Observable implements TileFactory, TileRecycler, Observer
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.| Constructor and Description |
|---|
RecyclingTileFactory(Observable tileCache)
Constructs a
RecyclingTileFactory. |
| Modifier and Type | Method and Description |
|---|---|
boolean |
canReclaimMemory()
Returns
true. |
WritableRaster |
createTile(SampleModel sampleModel,
Point location) |
void |
flush() |
long |
getMemoryUsed() |
boolean |
isMemoryCache()
Returns
true. |
void |
recycleTile(Raster tile)
Recycle the given tile.
|
void |
update(Observable o,
Object arg) |
addObserver, clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChangedpublic RecyclingTileFactory(Observable tileCache)
RecyclingTileFactory.public boolean canReclaimMemory()
true.canReclaimMemory in interface TileFactorypublic boolean isMemoryCache()
true.isMemoryCache in interface TileFactorypublic long getMemoryUsed()
getMemoryUsed in interface TileFactorypublic void flush()
flush in interface TileFactorypublic WritableRaster createTile(SampleModel sampleModel, Point location)
createTile in interface TileFactorypublic void recycleTile(Raster tile)
recycleTile in interface TileRecyclerpublic void update(Observable o, Object arg)
Copyright © 1996–2019 Geotools. All rights reserved.