Sets the data for a rectangle of pixels in the specified DataBuffer from a primitive array of type TransferType. For image data supported by the Java 2D API, this will be one of DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE. Data in the array may be in a packed format, thus increasing efficiency for data transfers.
The following code illustrates transferring data for a rectangular
region of pixels from
DataBuffer db1, whose storage layout is described by
SampleModel sm1, to DataBuffer db2, whose
storage layout is described by SampleModel sm2.
The transfer will generally be more efficient than using
getPixels/setPixels.
SampleModel sm1, sm2;
DataBuffer db1, db2;
sm2.setDataElements(x, y, w, h, sm1.getDataElements(x, y, w, h,
null, db1), db2);
Using getDataElements/setDataElements to transfer between two
DataBuffer/SampleModel pairs is legitimate if the SampleModels have
the same number of bands, corresponding bands have the same number of
bits per sample, and the TransferTypes are the same.
obj must be a primitive array of type TransferType. Otherwise, a ClassCastException is thrown. An ArrayIndexOutOfBoundsException may be thrown if the coordinates are not in bounds, or if obj is not large enough to hold the pixel data.
x | The minimum X coordinate of the pixel rectangle. | |
y | The minimum Y coordinate of the pixel rectangle. | |
w | The width of the pixel rectangle. | |
h | The height of the pixel rectangle. | |
obj | A primitive array containing pixel data. | |
data | The DataBuffer containing the image data. |
NullPointerException | if data is null. | |
ArrayIndexOutOfBoundsException | if the coordinates are not in bounds, or if obj is too small to hold the input. |
getNumDataElements, getTransferType, getDataElements(int, int, int, int, Object, DataBuffer), java.awt.image.DataBuffer
Diagram: SampleModel