Package org.apache.sis.image
Class WritablePixelIterator
Object
PixelIterator
WritablePixelIterator
- All Implemented Interfaces:
- Closeable,- AutoCloseable
A pixel iterator capable to write sample values. This iterator can edit pixel values in place,
 or write values in a different destination image than the source image. Source and destination
 images must use the same sample model and the same coordinates (both for pixels and tiles).
 Casting a 
 To check if a 
Contrarily to PixelIterator, WritablePixelIterator needs to be closed after
 iteration in order to release tiles. Example:
try (WritablePixelIterator it = WritablePixelIterator.create(image)) {
    double[] samples = null;
    while (it.next()) {
        samples = it.getPixel(samples);      // Get values in all bands.
        // Perform computation here...
        it.setPixels(sample);                // Replace values in all bands.
    }
}Casting a PixelIterator
 To check if a PixelIterator can be used for writing pixels, a … instanceof WritablePixelIterator
 check is not sufficient. The PixelIterator.isWritable() method should be invoked instead.- Since:
- 1.0
Defined in the sis-feature module
- 
Nested Class SummaryNested classes/interfaces inherited from class PixelIteratorPixelIterator.Builder, PixelIterator.Window<T extends Buffer>
- 
Method SummaryModifier and TypeMethodDescriptionvoidclose()Releases any resources hold by this iterator.static WritablePixelIteratorCreates an iterator for all pixels in the given image.booleanReturnstrueif this iterator can write pixel values.voidsetDataElements(Object values) Sets the data elements (not necessarily band values) of current pixel.voidsetPixel(double[] values) Sets the sample values of current pixel for all bands.voidsetPixel(float[] values) Sets the sample values of current pixel for all bands.voidsetPixel(int[] values) Sets the sample values of current pixel for all bands.voidsetSample(int band, double value) Writes a sample value in the specified band of current pixel.voidsetSample(int band, float value) Writes a sample value in the specified band of current pixel.voidsetSample(int band, int value) Writes a sample value in the specified band of current pixel.Methods inherited from class PixelIteratorcreate, createWindow, getDataElements, getDataType, getDomain, getIterationOrder, getNumBands, getPixel, getPixel, getPixel, getPosition, getSample, getSampleDouble, getSampleFloat, getSampleRanges, getTransferType, moveTo, next, rewind
- 
Method Details- 
createCreates an iterator for all pixels in the given image. This is a convenience method fornew Builder().createWritable(data).- Parameters:
- data- the image which contains the sample values on which to iterate.
- Returns:
- a new iterator traversing all pixels in the given image, in arbitrary order.
 
- 
isWritablepublic boolean isWritable()Returnstrueif this iterator can write pixel values. For some implementations, being an instance ofWritablePixelIteratoris not sufficient for being able to write pixel values.Note: all instances created by WritablePixelIterator.create(…)methods are guaranteed totrue.- Overrides:
- isWritablein class- PixelIterator
- Returns:
- trueif this iterator can be used for writing pixel values.
 
- 
setSamplepublic void setSample(int band, int value) Writes a sample value in the specified band of current pixel. ThePixelIterator.next()method must have returnedtrue, or thePixelIterator.moveTo(int,int)method must have been invoked successfully, before thissetSample(int, int)method is invoked. If above condition is not met, then this method behavior is undefined (there is no explicit bounds check for performance reasons).- Parameters:
- band- the band in which to set the sample value.
- value- the sample value to write in the specified band.
- See Also:
 
- 
setSamplepublic void setSample(int band, float value) Writes a sample value in the specified band of current pixel. ThePixelIterator.next()method must have returnedtrue, or thePixelIterator.moveTo(int,int)method must have been invoked successfully, before thissetSample(int, float)method is invoked. If above condition is not met, then this method behavior is undefined (there is no explicit bounds check for performance reasons).- Parameters:
- band- the band in which to set the sample value.
- value- the sample value to write in the specified band.
- See Also:
 
- 
setSamplepublic void setSample(int band, double value) Writes a sample value in the specified band of current pixel. ThePixelIterator.next()method must have returnedtrue, or thePixelIterator.moveTo(int,int)method must have been invoked successfully, before thissetSample(int, double)method is invoked. If above condition is not met, then this method behavior is undefined (there is no explicit bounds check for performance reasons).- Parameters:
- band- the band in which to set the sample value.
- value- the sample value to write in the specified band.
- See Also:
 
- 
setPixelpublic void setPixel(int[] values) Sets the sample values of current pixel for all bands. ThePixelIterator.next()method must have returnedtrue, or thePixelIterator.moveTo(int,int)method must have been invoked successfully, before thissetPixel(…)method is invoked. If above condition is not met, then this method behavior is undefined (there is no explicit bounds check for performance reasons).- Parameters:
- values- the new sample values for current pixel.
- See Also:
 
- 
setPixelpublic void setPixel(float[] values) Sets the sample values of current pixel for all bands. ThePixelIterator.next()method must have returnedtrue, or thePixelIterator.moveTo(int,int)method must have been invoked successfully, before thissetPixel(…)method is invoked. If above condition is not met, then this method behavior is undefined (there is no explicit bounds check for performance reasons).- Parameters:
- values- the new sample values for current pixel.
- See Also:
 
- 
setPixelpublic void setPixel(double[] values) Sets the sample values of current pixel for all bands. ThePixelIterator.next()method must have returnedtrue, or thePixelIterator.moveTo(int,int)method must have been invoked successfully, before thissetPixel(…)method is invoked. If above condition is not met, then this method behavior is undefined (there is no explicit bounds check for performance reasons).- Parameters:
- values- the new sample values for current pixel.
- See Also:
 
- 
setDataElementsSets the data elements (not necessarily band values) of current pixel. TheObjectargument is a relatively opaque format (it may beint[],byte[], etc.). It should be the value provided by a call toPixelIterator.getDataElements(Object)on an image using a compatible sample model.- Parameters:
- values- the new the data elements.
- Since:
- 1.1
- See Also:
 
- 
closepublic void close()Releases any resources hold by this iterator. If some pixel values have been written, the changes are committed.- Specified by:
- closein interface- AutoCloseable
- Specified by:
- closein interface- Closeable
 
 
-