- java.lang.Object
-
- java.awt.image.SampleModel
-
- java.awt.image.ComponentSampleModel
-
- java.awt.image.BandedSampleModel
-
public final class BandedSampleModelextends ComponentSampleModel
该类表示以带交织方式存储的图像数据,并且像素的每个样本占据DataBuffer的一个数据元素。 它是ComponentSampleModel的子类,但提供了一种比ComponentSampleModel提供的更有效的访问波段交错图像数据的实现。 在处理存储DataBuffer不同库中每个波段的样本数据的图像时,通常应使用此类。 提供了访问器方法,以便可以直接操作图像数据。 像素跨度是同一扫描线上相同频带的两个样本之间的数据阵列元素的数量。 BandedSampleModel的像素步幅为1。 扫描线步幅是给定样本与下一扫描线的同一列中的相应样本之间的数据阵列元素的数量。 频带偏移表示从将每个频带保持到频带的第一个采样的DataBuffer的存储体的第一个数据数组元素中的数据数组元素的数量。 频带编号从0到N-1。 银行索引表示数据缓冲区的库与图像数据带之间的对应关系。 该类支持TYPE_BYTE
,TYPE_USHORT
,TYPE_SHORT
,TYPE_INT
,TYPE_FLOAT
和TYPE_DOUBLE
个数据类型
-
-
字段汇总
-
声明的属性在类 java.awt.image.ComponentSampleModel
bandOffsets, bankIndices, numBands, numBanks, pixelStride, scanlineStride
-
声明的属性在类 java.awt.image.SampleModel
dataType, height, width
-
-
构造方法摘要
构造方法 构造器 描述 BandedSampleModel(int dataType, int w, int h, int numBands)
使用指定的参数构造BandedSampleModel。BandedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets)
使用指定的参数构造BandedSampleModel。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 SampleModel
createCompatibleSampleModel(int w, int h)
创建具有指定宽度和高度的新BandedSampleModel。DataBuffer
createDataBuffer()
创建与此BandedSampleModel对应的DataBuffer,DataBuffer的数据类型,库数和大小将与此BandedSampleModel一致。SampleModel
createSubsetSampleModel(int[] bands)
使用此BandedSampleModel的band子集创建一个新的BandedSampleModel。Object
getDataElements(int x, int y, Object obj, DataBuffer data)
返回TransferType类型的基本数组中单个像素的数据。int[]
getPixel(int x, int y, int[] iArray, DataBuffer data)
返回int数组中指定像素的所有样本。int[]
getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
返回int数组中指定矩形像素的所有样本,每个数据数组元素一个样本。int
getSample(int x, int y, int b, DataBuffer data)
对于位于(x,y)的像素,在指定band中的样本返回int。double
getSampleDouble(int x, int y, int b, DataBuffer data)
将位于(x,y)的像素的指定波段中的样本返回为double。float
getSampleFloat(int x, int y, int b, DataBuffer data)
将位于(x,y)的像素的指定band中的样本返回为float。int[]
getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
返回int数组中指定矩形像素的指定band中的样本,每个数据数组元素一个样本。void
setDataElements(int x, int y, Object obj, DataBuffer data)
从TransferType类型的基本数组中设置指定DataBuffer中单个像素的数据。void
setPixel(int x, int y, int[] iArray, DataBuffer data)
使用int数组样本设置DataBuffer中的像素以进行输入。void
setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
为每个数组元素包含一个样本的int数组设置像素矩形的所有样本。void
setSample(int x, int y, int b, double s, DataBuffer data)
使用double作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。void
setSample(int x, int y, int b, float s, DataBuffer data)
使用float作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。void
setSample(int x, int y, int b, int s, DataBuffer data)
使用int作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。void
setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
从包含每个数据数组元素一个样本的int数组中为指定的像素矩形设置指定band中的样本。-
声明方法的类 java.awt.image.ComponentSampleModel
getBandOffsets, getBankIndices, getNumDataElements, getOffset, getOffset, getPixelStride, getSampleSize, getSampleSize, getScanlineStride
-
声明方法的类 java.awt.image.SampleModel
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSamples, setSamples
-
-
-
-
构造方法详细信息
-
BandedSampleModel
public BandedSampleModel(int dataType, int w, int h, int numBands)
使用指定的参数构造BandedSampleModel。 像素步幅将是一个数据元素。 扫描线步幅与宽度相同。 每个频段将存储在一个单独的存储区中,所有频段偏移将为零。- 参数
-
dataType
- 用于存储样本的数据类型。 -
w
- 描述的图像数据区域的宽度(以像素为单位)。 -
h
- 描述的图像数据区域的高度(以像素为单位)。 -
numBands
- 图像数据的波段数。 - 异常
-
IllegalArgumentException
- 如果dataType
不是受支持的数据类型之一
-
BandedSampleModel
public BandedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets)
使用指定的参数构造BandedSampleModel。 band的数量将从bandOffsets bankIndices数组的长度推断出来,这些数组必须相等。 像素步幅将是一个数据元素。- 参数
-
dataType
- 用于存储样本的数据类型。 -
w
- 描述的图像数据区域的宽度(以像素为单位)。 -
h
- 描述的图像数据区域的高度(以像素为单位)。 -
scanlineStride
- 图像数据的行scanlineStride
。 -
bankIndices
- 每个频段的银行索引。 -
bandOffsets
- 每个频段的频段偏移。 - 异常
-
IllegalArgumentException
- 如果dataType
不是受支持的数据类型之一
-
-
方法详细信息
-
createCompatibleSampleModel
public SampleModel createCompatibleSampleModel(int w, int h)
创建具有指定宽度和高度的新BandedSampleModel。 新的BandedSampleModel将具有与此BandedSampleModel相同数量的波段,存储数据类型和库指数。 将对带偏移进行压缩,使得带之间的偏移将是w * pixelStride,并且所有带偏移的最小值为零。- 重写:
-
createCompatibleSampleModel
类ComponentSampleModel
- 参数
-
w
- 生成的宽度BandedSampleModel
-
h
- 结果BandedSampleModel
的高度 - 结果
- 具有指定宽度和高度的新
BandedSampleModel
。 - 异常
-
IllegalArgumentException
- 如果w
或h
等于Integer.MAX_VALUE
或Integer.MIN_VALUE
-
IllegalArgumentException
- 如果dataType
不是受支持的数据类型之一
-
createSubsetSampleModel
public SampleModel createSubsetSampleModel(int[] bands)
使用此BandedSampleModel的band子集创建一个新的BandedSampleModel。 新的BandedSampleModel可以与现有BandedSampleModel可以使用的任何DataBuffer一起使用。 新的BandedSampleModel / DataBuffer组合将表示具有原始BandedSampleModel / DataBuffer组合的波段子集的图像。- 重写:
-
createSubsetSampleModel
,类ComponentSampleModel
- 参数
-
bands
- 此ComponentSampleModel
一个频段子集 - 结果
- a
ComponentSampleModel
使用此ComponentSampleModel
一个子集创建。 - 异常
-
RasterFormatException
- 如果波段数大于此样本模型中的库数。 -
IllegalArgumentException
- 如果dataType
不是受支持的数据类型之一
-
createDataBuffer
public DataBuffer createDataBuffer()
创建与此BandedSampleModel对应的DataBuffer,DataBuffer的数据类型,库数和大小将与此BandedSampleModel一致。- 重写:
-
createDataBuffer
类ComponentSampleModel
- 结果
-
DataBuffer
其数据类型,库数和大小与此ComponentSampleModel
一致。 - 异常
-
IllegalArgumentException
- 如果dataType
不是受支持的类型之一。
-
getDataElements
public Object getDataElements(int x, int y, Object obj, DataBuffer data)
返回TransferType类型的基本数组中单个像素的数据。 对于BandedSampleModel,这将与数据类型相同,并且每个数组元素将返回一个样本。 通常,obj应该作为null传递,以便Object将自动创建并且将具有正确的原始数据类型。以下代码说明将一个像素的数据从DataBuffer
db1
(其存储布局由bsm1
描述)bsm1
到DataBufferdb2
,其存储布局由bsm2
描述。 传输通常比使用getPixel / setPixel更有效。BandedSampleModel bsm1, bsm2; DataBufferInt db1, db2; bsm2.setDataElements(x, y, bsm1.getDataElements(x, y, null, db1), db2);
如果SampleModels具有相同数量的band,相应的band具有相同的每个样本位数,并且TransferTypes相同,则使用getDataElements / setDataElements在两个DataBuffer / SampleModel对之间进行传输是合法的。如果obj为非null,则它应该是TransferType类型的基本数组。 否则,抛出ClassCastException。 如果坐标不在边界内,或者如果obj非空并且不足以容纳像素数据,则可能抛出ArrayIndexOutOfBoundsException。
- 重写:
-
getDataElements
在课程ComponentSampleModel
- 参数
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
obj
- 如果为非null,则返回像素数据的基本数组。 -
data
- 包含图像数据的DataBuffer。 - 结果
- 指定像素的数据。
- 另请参见:
-
setDataElements(int, int, Object, DataBuffer)
-
getPixel
public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
返回int数组中指定像素的所有样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getPixel
类ComponentSampleModel
- 参数
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
iArray
- 如果为非null,则返回此数组中的样本 -
data
- 包含图像数据的DataBuffer - 结果
- 指定像素的样本。
- 另请参见:
-
setPixel(int, int, int[], DataBuffer)
-
getPixels
public int[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
返回int数组中指定矩形像素的所有样本,每个数据数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getPixels
在课程ComponentSampleModel
- 参数
-
x
- 左上角像素位置的X坐标 -
y
- 左上角像素位置的Y坐标 -
w
- 像素矩形的宽度 -
h
- 像素矩形的高度 -
iArray
- 如果为非null,则返回此数组中的样本 -
data
- 包含图像数据的DataBuffer - 结果
- 指定区域内像素的样本。
- 另请参见:
-
setPixels(int, int, int, int, int[], DataBuffer)
-
getSample
public int getSample(int x, int y, int b, DataBuffer data)
对于位于(x,y)的像素,在指定band中的样本返回int。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getSample
在类ComponentSampleModel
- 参数
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
b
- 乐队返回 -
data
- 包含图像数据的DataBuffer - 结果
- 指定像素中指定像素的样本。
- 另请参见:
-
setSample(int, int, int, int, DataBuffer)
-
getSampleFloat
public float getSampleFloat(int x, int y, int b, DataBuffer data)
将位于(x,y)的像素的指定band中的样本返回为float。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getSampleFloat
类ComponentSampleModel
- 参数
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
b
- 乐队返回 -
data
- 包含图像数据的DataBuffer - 结果
- 一个浮点值,表示指定像素中指定像素的样本。
-
getSampleDouble
public double getSampleDouble(int x, int y, int b, DataBuffer data)
将位于(x,y)的像素的指定波段中的样本返回为double。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getSampleDouble
在课程ComponentSampleModel
- 参数
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
b
- 乐队返回 -
data
- 包含图像数据的DataBuffer - 结果
- 一个double值,表示指定像素中指定像素的样本。
-
getSamples
public int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
返回int数组中指定矩形像素的指定band中的样本,每个数据数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getSamples
类ComponentSampleModel
- 参数
-
x
- 左上角像素位置的X坐标 -
y
- 左上角像素位置的Y坐标 -
w
- 像素矩形的宽度 -
h
- 像素矩形的高度 -
b
- 乐队返回 -
iArray
- 如果为非null,则返回此数组中的样本 -
data
- 包含图像数据的DataBuffer - 结果
- 指定区域内像素的指定波段中的样本。
- 另请参见:
-
setSamples(int, int, int, int, int, int[], DataBuffer)
-
setDataElements
public void setDataElements(int x, int y, Object obj, DataBuffer data)
从TransferType类型的基本数组中设置指定DataBuffer中单个像素的数据。 对于BandedSampleModel,这将与数据类型相同,并且每个数组元素传输一个样本。以下代码说明将一个像素的数据从DataBuffer
db1
(其存储布局由bsm1
描述)bsm1
到DataBufferdb2
,其存储布局由bsm2
描述。 传输通常比使用getPixel / setPixel更有效。BandedSampleModel bsm1, bsm2; DataBufferInt db1, db2; bsm2.setDataElements(x, y, bsm1.getDataElements(x, y, null, db1), db2);
如果SampleModels具有相同数量的band,相应的band具有相同的每个样本位数,并且TransferTypes相同,则使用getDataElements / setDataElements在两个DataBuffer / SampleModel对之间进行传输是合法的。obj必须是TransferType类型的原始数组。 否则,抛出ClassCastException。 如果坐标不在边界内,或者obj不足以容纳像素数据,则可能抛出ArrayIndexOutOfBoundsException。
- 重写:
-
setDataElements
,类ComponentSampleModel
- 参数
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
obj
- 如果为非null,则返回此对象中的基元数组 -
data
- 包含图像数据的DataBuffer - 另请参见:
-
getDataElements(int, int, Object, DataBuffer)
-
setPixel
public void setPixel(int x, int y, int[] iArray, DataBuffer data)
使用int数组样本设置DataBuffer中的像素以进行输入。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setPixel
在类ComponentSampleModel
- 参数
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
iArray
- int数组中的输入样本 -
data
- 包含图像数据的DataBuffer - 另请参见:
-
getPixel(int, int, int[], DataBuffer)
-
setPixels
public void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
为每个数组元素包含一个样本的int数组设置像素矩形的所有样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setPixels
类别ComponentSampleModel
- 参数
-
x
- 左上角像素位置的X坐标 -
y
- 左上角像素位置的Y坐标 -
w
- 像素矩形的宽度 -
h
- 像素矩形的高度 -
iArray
- int数组中的输入样本 -
data
- 包含图像数据的DataBuffer - 另请参见:
-
getPixels(int, int, int, int, int[], DataBuffer)
-
setSample
public void setSample(int x, int y, int b, int s, DataBuffer data)
使用int作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setSample
类ComponentSampleModel
- 参数
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
b
- 要设置的乐队 -
s
- 输入样本为int -
data
- 包含图像数据的DataBuffer - 另请参见:
-
getSample(int, int, int, DataBuffer)
-
setSample
public void setSample(int x, int y, int b, float s, DataBuffer data)
使用float作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setSample
,类ComponentSampleModel
- 参数
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
b
- 要设置的乐队 -
s
- 输入样本为浮点数 -
data
- 包含图像数据的DataBuffer - 另请参见:
-
getSample(int, int, int, DataBuffer)
-
setSample
public void setSample(int x, int y, int b, double s, DataBuffer data)
使用double作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setSample
,类ComponentSampleModel
- 参数
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
b
- 要设置的乐队 -
s
- 输入样本为double -
data
- 包含图像数据的DataBuffer - 另请参见:
-
getSample(int, int, int, DataBuffer)
-
setSamples
public void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
从包含每个数据数组元素一个样本的int数组中为指定的像素矩形设置指定band中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setSamples
类ComponentSampleModel
- 参数
-
x
- 左上角像素位置的X坐标 -
y
- 左上角像素位置的Y坐标 -
w
- 像素矩形的宽度 -
h
- 像素矩形的高度 -
b
- 要设置的乐队 -
iArray
- 输入样本数组 -
data
- 包含图像数据的DataBuffer - 另请参见:
-
getSamples(int, int, int, int, int, int[], DataBuffer)
-
-