/** * Returns the number of bytes required in order to memorize {@linkplain #getNumSampleValues * all sample values}. The sample values size is determined by the image or raster given at * construction time. */ public long getMemoryUsage() { return getNumSampleValues() * (DataBuffer.getDataTypeSize(dataType) / 8); // TODO: replace 8 by Byte.SIZE when we will be allowed to compile for J2SE 1.5. }
/** * Computes the size of the region to be read, taking subsampling in account. * * @param image The image or raster to be written. * @param parameters The write parameters, or {@code null} if the whole image will be written. * @return dimension The dimension of the image to be written. */ protected static ImageDimension computeSize(final IIOImage image, final ImageWriteParam parameters) { final ImageDimension dimension; if (image.hasRaster()) { dimension = new ImageDimension(image.getRaster()); } else { dimension = new ImageDimension(image.getRenderedImage()); } if (parameters != null) { final Rectangle bounds = parameters.getSourceRegion(); if (bounds != null) { if (bounds.width < dimension.width) { dimension.width = bounds.width; } if (bounds.height < dimension.height) { dimension.height = bounds.height; } } dimension.width -= parameters.getSubsamplingXOffset(); dimension.height -= parameters.getSubsamplingYOffset(); } return dimension; }
final RectIter iterator = createRectIter(image, parameters); final ImageDimension size = computeSize(image, parameters); final float progressScale = 100f / size.getNumSampleValues(); int numSampleValues = 0, nextProgress = 0; if (!iterator.finishedBands()) do {