This class performs a pixel-by-pixel rescaling of the data in the
source image by multiplying the sample values for each pixel by a scale
factor and then adding an offset. The scaled sample values are clipped
to the minimum/maximum representable in the destination image.
The pseudo code for the rescaling operation is as follows:
for each pixel from Source object {
for each band/component of the pixel {
dstElement = (srcElement*scaleFactor) + offset
}
}
For Rasters, rescaling operates on bands. The number of
sets of scaling constants may be one, in which case the same constants
are applied to all bands, or it must equal the number of Source
Raster bands.
For BufferedImages, rescaling operates on color and alpha components.
The number of sets of scaling constants may be one, in which case the
same constants are applied to all color (but not alpha) components.
Otherwise, the number of sets of scaling constants may
equal the number of Source color components, in which case no
rescaling of the alpha component (if present) is performed.
If neither of these cases apply, the number of sets of scaling constants
must equal the number of Source color components plus alpha components,
in which case all color and alpha components are rescaled.
BufferedImage sources with premultiplied alpha data are treated in the same
manner as non-premultiplied images for purposes of rescaling. That is,
the rescaling is done per band on the raw data of the BufferedImage source
without regard to whether the data is premultiplied. If a color conversion
is required to the destination ColorModel, the premultiplied state of
both source and destination will be taken into account for this step.
Images with an IndexColorModel cannot be rescaled.
If a RenderingHints object is specified in the constructor, the
color rendering hint and the dithering hint may be used when color
conversion is required.
Note that in-place operation is allowed (i.e. the source and destination can
be the same object).