在 transfertype 类型基本数组中返回指定像素矩形的像素数据。对于 java 2d api 所支持的图像数据,这将是 databuffer.type_byte、databuffer.type_ushort、databuffer.type_int、databuffer.type_short、databuffer.type_float 或 databuffer.type_double 中的一个。可以使用压缩格式返回数据,从而提高数据传输的效率。通常,obj 作为 null 传入,从而 object 将被自动创建,并具有正确的基本数据类型。
以下代码说明了如何将一个像素的数据从 databuffer db1
(其存储布局由 samplemodel sm1
描述)传输到 databuffer db2
(其存储布局由 samplemodel sm2
描述)。该传输通常比使用 getpixels/setpixels 更有效。
samplemodel sm1, sm2;
databuffer db1, db2;
sm2.setdataelements(x, y, w, h, sm1.getdataelements(x, y, w,
h, null, db1), db2);
如果两个 samplemodel 具有相同的 band 数量,相应 band 的每个样本具有相同的位数,且 transfertype 相同,则使用 getdataelements/setdataelements 在两个 databuffer/samplemodel 对之间进行传输是合法的。
如果 obj 不为 null,则它应是 transfertype 类型的基本数组。否则抛出 classcastexception。如果坐标不在边界内,或者 obj 不为 null 且大小不足以保存像素数据,则抛出 arrayindexoutofboundsexception。
- 参数:
x
- 像素矩形的最小 x 坐标。y
- 像素矩形的最小 y 坐标。w
- 像素矩形的宽度。h
- 像素矩形的高度。obj
- 如果不为 null,则 obj 是接收返回像素数据的基本数组。data
- 包含图像数据的 databuffer。
- 返回:
- 指定像素区域的数据元素。
- 抛出:
nullpointerexception
- 如果 data 为 null。
arrayindexoutofboundsexception
- 如果坐标不在边界内,或者 obj 太小而不能容纳输出。- 另请参见:
getnumdataelements()
,
gettransfertype()
,
setdataelements(int, int, int, int, object, databuffer)
,
databuffer