- java.lang.Object
-
- java.awt.image.SampleModel
-
- java.awt.image.ComponentSampleModel
-
- 已知直接子类:
-
BandedSampleModel,PixelInterleavedSampleModel
public class ComponentSampleModel extends SampleModel
该类表示存储的图像数据,使得像素的每个样本占据DataBuffer的一个数据元素。 它存储构成N个独立数据阵列元素中的像素的N个样本。 不同的波段可能位于DataBuffer的不同库中。 提供了访问器方法,以便可以直接操作图像数据。 该类可以支持不同种类的交织,例如频带交织,扫描线交织和像素交织。 像素跨度是同一扫描线上相同频带的两个样本之间的数据阵列元素的数量。 扫描线步幅是给定样本与下一扫描线的同一列中的相应样本之间的数据阵列元素的数量。 频带偏移表示从将每个频带保持到频带的第一个采样的DataBuffer的存储体的第一个数据数组元素中的数据数组元素的数量。 频带编号从0到N-1。 这个类可以代表图像数据,其中每个样本是(使用可被存储在8位,16位或32位的无符号整数DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT,或DataBuffer.TYPE_INT,分别地),数据为每个样本是一个带符号的整数,其可以以16位(使用DataBuffer.TYPE_SHORT)或每个样本为有符号浮点数或双倍数量的数据存储(分别使用DataBuffer.TYPE_FLOAT或DataBuffer.TYPE_DOUBLE)。 给定ComponentSampleModel的所有样本都以相同的精度存储。 所有步幅和偏移都必须是非负的。 该类支持TYPE_BYTE,TYPE_USHORT,TYPE_SHORT,TYPE_INT,TYPE_FLOAT,TYPE_DOUBLE,
-
-
字段汇总
字段 变量和类型 字段 描述 protected int[]bandOffsets数据数组元素中所有波段的偏移量。protected int[]bankIndices存储一系列图像数据的每个银行的索引。protected intnumBands此ComponentSampleModel的频段数。protected intnumBanks这个银行的数量在ComponentSampleModel。protected intpixelStride由ComponentSampleModel描述的图像数据区域的像素步幅(在数据阵列元素中)。protected intscanlineStride此ComponentSampleModel描述的图像数据区域的行跨度(在数据数组元素中)。-
声明的属性在类 java.awt.image.SampleModel
dataType, height, width
-
-
构造方法摘要
构造方法 构造器 描述 ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bandOffsets)使用指定的参数构造ComponentSampleModel。ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bankIndices, int[] bandOffsets)使用指定的参数构造ComponentSampleModel。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 SampleModelcreateCompatibleSampleModel(int w, int h)创建具有指定宽度和高度的新ComponentSampleModel。DataBuffercreateDataBuffer()创建一个DataBuffer,对应于这个ComponentSampleModel。SampleModelcreateSubsetSampleModel(int[] bands)使用此ComponentSampleModel的band子集创建新的ComponentSampleModel。int[]getBandOffsets()返回所有波段的波段偏移。int[]getBankIndices()返回所有波段的银行索引。ObjectgetDataElements(int x, int y, Object obj, DataBuffer data)返回类型为TransferType的基本数组中单个像素的数据。intgetNumDataElements()intgetOffset(int x, int y)获取第一个像素带(x,y)的偏移量。intgetOffset(int x, int y, int b)获取像素(x,y)的band b的偏移量。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数组中指定矩形像素的所有样本,每个数组元素一个样本。intgetPixelStride()返回此ComponentSampleModel的像素跨度。intgetSample(int x, int y, int b, DataBuffer data)对于位于(x,y)的像素,在指定band中的样本返回int。doublegetSampleDouble(int x, int y, int b, DataBuffer data)将位于(x,y)的像素的指定波段中的样本返回为double。floatgetSampleFloat(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中的样本,每个数据数组元素一个样本。int[]getSampleSize()返回所有band的每个样本的位数。intgetSampleSize(int band)返回指定band的每个样本的位数。intgetScanlineStride()返回此ComponentSampleModel的扫描行间距。voidsetDataElements(int x, int y, Object obj, DataBuffer data)从类型为TransferType的基本数组中为指定的DataBuffer的单个像素设置数据。voidsetPixel(int x, int y, int[] iArray, DataBuffer data)使用int数组样本设置DataBuffer的像素以进行输入。voidsetPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)为每个数组元素包含一个样本的int数组设置像素矩形的所有样本。voidsetSample(int x, int y, int b, double s, DataBuffer data)使用double输入为DataBuffer位于(x,y)的像素设置指定波段的样本。voidsetSample(int x, int y, int b, float s, DataBuffer data)使用浮点输入为DataBuffer位于(x,y)的像素设置指定波段的样本。voidsetSample(int x, int y, int b, int s, DataBuffer data)使用int作为输入,为DataBuffer位于(x,y)的像素设置指定band中的样本。voidsetSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)从包含每个数据数组元素一个样本的int数组中为指定的像素矩形设置指定band中的样本。-
声明方法的类 java.awt.image.SampleModel
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSamples, setSamples
-
-
-
-
字段详细信息
-
bandOffsets
protected int[] bandOffsets
数据数组元素中所有波段的偏移量。
-
bankIndices
protected int[] bankIndices
存储一系列图像数据的每个银行的索引。
-
numBands
protected int numBands
这个ComponentSampleModel的乐队数量。
-
numBanks
protected int numBanks
这个银行的数量在ComponentSampleModel。
-
scanlineStride
protected int scanlineStride
此ComponentSampleModel描述的图像数据区域的行跨度(在数据数组元素中)。
-
pixelStride
protected int pixelStride
由ComponentSampleModel描述的图像数据区域的像素步幅(在数据阵列元素中)。
-
-
构造方法详细信息
-
ComponentSampleModel
public ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bandOffsets)使用指定的参数构造ComponentSampleModel。 band的数量将由bandOffsets数组的长度给出。 所有波段都将存储在DataBuffer的第一个库中。- 参数
-
dataType- 用于存储样本的数据类型 -
w- 所描述的图像数据区域的宽度(以像素为单位) -
h- 所描述的图像数据区域的高度(以像素为单位) -
pixelStride- 描述的图像数据区域的像素步幅 -
scanlineStride- 描述的图像数据区域的行scanlineStride -
bandOffsets- 所有频段的偏移量 - 异常
-
IllegalArgumentException- 如果w或h不大于0 -
IllegalArgumentException- 如果pixelStride小于0 -
IllegalArgumentException- 如果scanlineStride小于0 -
IllegalArgumentException- 如果numBands小于1 -
IllegalArgumentException- 如果w和h的产品大于Integer.MAX_VALUE -
IllegalArgumentException- 如果dataType不是受支持的数据类型之一
-
ComponentSampleModel
public ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bankIndices, int[] bandOffsets)使用指定的参数构造ComponentSampleModel。 band的数量将由bandOffsets数组的长度给出。 不同的频带可以存储在DataBuffer的不同存储体中。- 参数
-
dataType- 用于存储样本的数据类型 -
w- 所描述的图像数据区域的宽度(以像素为单位) -
h- 所描述的图像数据区域的高度(以像素为单位) -
pixelStride- 描述的图像数据区域的像素跨度 -
scanlineStride- 描述的图像数据区域的行scanlineStride -
bankIndices- 所有波段的银行指数 -
bandOffsets- 所有频段的频段偏移 - 异常
-
IllegalArgumentException- 如果w或h不大于0 -
IllegalArgumentException- 如果pixelStride小于0 -
IllegalArgumentException- 如果scanlineStride小于0 -
IllegalArgumentException- 如果长度bankIndices不等于bankOffsets的长度 -
IllegalArgumentException-如有的银行指数bandIndices小于0 -
IllegalArgumentException- 如果dataType不是受支持的数据类型之一
-
-
方法详细信息
-
createCompatibleSampleModel
public SampleModel createCompatibleSampleModel(int w, int h)
创建具有指定宽度和高度的新ComponentSampleModel。 新SampleModel将具有相同数目的频带,存储数据类型的交织方案,以及像素跨度,因为这SampleModel。- Specified by:
-
createCompatibleSampleModelin classSampleModel - 参数
-
w- 生成的SampleModel的宽度 -
h- 结果SampleModel的高度 - 结果
-
具有指定大小的新
ComponentSampleModel - 异常
-
IllegalArgumentException- 如果w或h不大于0
-
createSubsetSampleModel
public SampleModel createSubsetSampleModel(int[] bands)
使用此ComponentSampleModel的band子集创建新的ComponentSampleModel。 新的ComponentSampleModel可以与现有ComponentSampleModel可以使用的任何DataBuffer一起使用。 新的ComponentSampleModel / DataBuffer组合将表示具有原始ComponentSampleModel / DataBuffer组合的波段子集的图像。- Specified by:
-
createSubsetSampleModel类别SampleModel - 参数
-
bands- 此ComponentSampleModel一个频段子集 - 结果
-
一个
ComponentSampleModel与乐队从这个子集创建ComponentSampleModel。
-
createDataBuffer
public DataBuffer createDataBuffer()
创建一个DataBuffer,对应于这个ComponentSampleModel。DataBuffer对象的数据类型,库数和大小与此ComponentSampleModel一致。- Specified by:
-
createDataBuffer在类SampleModel - 结果
-
DataBuffer其数据类型,银行数量和大小均与此ComponentSampleModel一致。
-
getOffset
public int getOffset(int x, int y)获取第一个像素带(x,y)的偏移量。 可以从DataBufferdata获得第一波段的样本,其中ComponentSampleModelcsm为data.getElem(csm.getOffset(x, y));- 参数
-
x- 像素的X位置 -
y- 像素的Y位置 - 结果
- 指定像素的第一个波段的偏移量。
-
getOffset
public int getOffset(int x, int y, int b)获取像素(x,y)的band b的偏移量。 可以从DataBuffer data检索带b的DataBuffer data,其中ComponentSampleModel csm为data.getElem(csm.getOffset(x, y, b));- 参数
-
x- 指定像素的X位置 -
y- 指定像素的Y位置 -
b- 指定的乐队 - 结果
- 指定像素的指定波段的偏移量。
-
getSampleSize
public final int[] getSampleSize()
返回所有band的每个样本的位数。- Specified by:
-
getSampleSize类SampleModel - 结果
- 一个数组,包含所有波段的每个采样的位数,其中数组中的每个元素代表一个波段。
-
getSampleSize
public final int getSampleSize(int band)
返回指定band的每个样本的位数。- Specified by:
-
getSampleSize在类SampleModel - 参数
-
band- 指定的频段 - 结果
- 指定波段的每个采样的位数。
-
getBankIndices
public final int[] getBankIndices()
返回所有波段的银行索引。- 结果
- 所有乐队的银行指数。
-
getBandOffsets
public final int[] getBandOffsets()
返回所有波段的波段偏移。- 结果
- 所有乐队的乐队抵消。
-
getScanlineStride
public final int getScanlineStride()
返回此ComponentSampleModel的扫描行间距。- 结果
-
扫描线的步幅为
ComponentSampleModel。
-
getPixelStride
public final int getPixelStride()
返回此ComponentSampleModel的像素跨度。- 结果
-
这个
ComponentSampleModel的像素大步。
-
getNumDataElements
public final int getNumDataElements()
返回使用getDataElements(int, int, Object, DataBuffer)和setDataElements(int, int, Object, DataBuffer)方法传输像素所需的数据元素数。 对于ComponentSampleModel,这与频段数相同。- Specified by:
-
getNumDataElements类SampleModel - 结果
-
使用
getDataElements和setDataElements方法传输像素所需的数据元素数。 - 另请参见:
-
SampleModel.getNumDataElements(),SampleModel.getNumBands()
-
getDataElements
public Object getDataElements(int x, int y, Object obj, DataBuffer data)
返回类型为TransferType的基本数组中单个像素的数据。 对于ComponentSampleModel,这与数据类型相同,并且每个数组元素返回一个样本。 通常,obj应作为null,以便Object自动创建并且是正确的基本数据类型。以下代码说明了将一个像素的数据从
DataBuffer db1(其存储布局由ComponentSampleModel csm1描述)ComponentSampleModel csm1到DataBuffer db2,其存储布局由ComponentSampleModel csm2描述。 转移通常比使用getPixel和setPixel更有效。ComponentSampleModel csm1, csm2; DataBufferInt db1, db2; csm2.setDataElements(x, y, csm1.getDataElements(x, y, null, db1), db2);如果SampleModel对象具有相同的频带数,则使用getDataElements和setDataElements在两个DataBuffer/SampleModel对之间进行传输是合法的,相应的频带每个样本具有相同的位数,并且TransferType是相同的。如果
obj不是null,则它应该是类型为TransferType的基本数组。 否则,抛出ClassCastException。 一个ArrayIndexOutOfBoundsException如果坐标不在边界可能被抛出,或者如果obj不是null并没有大到足以容纳像素数据。- Specified by:
-
getDataElements类SampleModel - 参数
-
x- 像素位置的X坐标 -
y- 像素位置的Y坐标 -
obj- 如果null,则返回像素数据的基本数组 -
data- 包含图像数据的DataBuffer - 结果
- 指定像素的数据
- 异常
-
NullPointerException- 如果数据为空。 -
ArrayIndexOutOfBoundsException- 如果坐标不在边界内,或者obj太小而无法保持输出。 - 另请参见:
-
setDataElements(int, int, Object, DataBuffer)
-
getPixel
public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)返回int数组中指定像素的所有样本,每个数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getPixel在类SampleModel - 参数
-
x- 像素位置的X坐标 -
y- 像素位置的Y坐标 -
iArray- 如果为非null,则返回此数组中的样本 -
data- 包含图像数据的DataBuffer - 结果
- 指定像素的样本。
- 异常
-
NullPointerException- 如果数据为空。 -
ArrayIndexOutOfBoundsException- 如果坐标不在边界内,或者iArray太小而无法保持输出。 - 另请参见:
-
setPixel(int, int, int[], DataBuffer)
-
getPixels
public int[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)返回int数组中指定矩形像素的所有样本,每个数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getPixels,类SampleModel - 参数
-
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。- Specified by:
-
getSample在类SampleModel - 参数
-
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在类SampleModel - 参数
-
x- 像素位置的X坐标 -
y- 像素位置的Y坐标 -
b- 乐队返回 -
data- 包含图像数据的DataBuffer - 结果
- 一个浮点值,表示指定像素中指定像素的样本。
-
getSampleDouble
public double getSampleDouble(int x, int y, int b, DataBuffer data)将位于(x,y)的像素的指定波段中的样本返回为double。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getSampleDouble,类SampleModel - 参数
-
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类SampleModel - 参数
-
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单个像素的数据。 对于ComponentSampleModel,这与数据类型相同,并且每个数组元素传输一个样本。以下代码说明了将一个像素的数据从
DataBuffer db1(其存储布局由ComponentSampleModel csm1描述)ComponentSampleModel csm1到DataBuffer db2,其存储布局由ComponentSampleModel csm2描述。 传输通常比使用getPixel和setPixel更有效。ComponentSampleModel csm1, csm2; DataBufferInt db1, db2; csm2.setDataElements(x, y, csm1.getDataElements(x, y, null, db1), db2);如果SampleModel对象具有相同数量的波段,相应的波段每个采样具有相同的比特数,并且TransferType是相同的,则使用getDataElements和setDataElements在两个DataBuffer/SampleModel对之间进行传输是合法的。甲
ClassCastException如果被抛出obj不是类型的基本数组TransferType。 一个ArrayIndexOutOfBoundsException如果坐标不在边界可能被抛出,或者如果obj不够大,无法容纳像素数据。- Specified by:
-
setDataElements在课程SampleModel - 参数
-
x- 像素位置的X坐标 -
y- 像素位置的Y坐标 -
obj- 包含像素数据的原始数组 -
data- 包含图像数据的DataBuffer - 另请参见:
-
getDataElements(int, int, Object, DataBuffer)
-
setPixel
public void setPixel(int x, int y, int[] iArray, DataBuffer data)使用int数组样本为输入设置DataBuffer的像素。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setPixel在类SampleModel - 参数
-
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在类SampleModel - 参数
-
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)的像素设置指定波段中的样本。 如果坐标不在边界内,则可能会抛出ArrayIndexOutOfBoundsException。- Specified by:
-
setSample类SampleModel - 参数
-
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)使用浮点输入为DataBuffer位于(x,y)的像素设置指定波段的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setSample类SampleModel - 参数
-
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)的像素设置指定波段的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setSample在类SampleModel - 参数
-
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在类SampleModel - 参数
-
x- 左上角像素位置的X坐标 -
y- 左上角像素位置的Y坐标 -
w- 像素矩形的宽度 -
h- 像素矩形的高度 -
b- 要设置的乐队 -
iArray- int数组中的输入样本 -
data- 包含图像数据的DataBuffer - 另请参见:
-
getSamples(int, int, int, int, int, int[], DataBuffer)
-
-