|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.awt.image.SampleModel java.awt.image.ComponentSampleModel java.awt.image.BandedSampleModel
public final class BandedSampleModel
此类表示按 band 交插方式存储的图像数据,像素的每个样本都占用 DataBuffer 的一个数据元素。此类是 ComponentSampleModel 的子类,但是对于访问 band 交插图像数据来说,它提供的实现比 ComponentSampleModel 提供的实现更有效。当处理存储在不同 DataBuffer 存储单元中每个 band 的样本数据的图像时,通常应该使用此类。由于提供了 Accessor 方法,因此可以直接对图像数据进行操作。像素间距 (pixel stride) 是同一 scanline 上同一 band 的两个样本之间的数据数组元素数。BandedSampleModel 的像素间距为 1。Scanline 间距是给定样本与下一 scanline 的同一列中对应样本之间的数据数组元素数。Band 偏移量表示从保存每个 band 的 DataBuffer 存储单元的第一个数据数组元素到 band 的第一个样本之间的数据数组元素数。这些 band 从 0 到 N-1 进行编号。存储单元索引表示数据缓冲区存储单元与图像数据 band 之间的对应关系。此类支持 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) 处的像素,返回指定 band 中样本的 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 中的样本,每个数据数组元素对应一个样本。 |
int |
hashCode()
返回该对象的哈希码值。 |
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 继承的方法 |
---|
equals, 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 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public BandedSampleModel(int dataType, int w, int h, int numBands)
dataType
- 存储样本的数据类型。w
- 所描述的图像数据区域的宽度(以像素为单位)。h
- 所描述的图像数据区域的高度(以像素为单位)。numBands
- 图像数据的 band 数。
IllegalArgumentException
- 如果 dataType
不是受支持的数据类型之一public BandedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets)
dataType
- 存储样本的数据类型。w
- 所描述的图像数据区域的宽度(以像素为单位)。h
- 所描述的图像数据区域的高度(以像素为单位)。scanlineStride
- 图像数据的行间距。bankIndices
- 每个 band 的存储单元索引。bandOffsets
- 每个 band 的 band 偏移量。
IllegalArgumentException
- 如果 dataType
不是受支持的数据类型之一方法详细信息 |
---|
public SampleModel createCompatibleSampleModel(int w, int h)
w
- 得到的 BandedSampleModel
的宽度h
- 得到的 BandedSampleModel
的高度
BandedSampleModel
。
IllegalArgumentException
- 如果 w
或 h
等于 Integer.MAX_VALUE
或 Integer.MIN_VALUE
IllegalArgumentException
- 如果 dataType
不是受支持的数据类型之一public SampleModel createSubsetSampleModel(int[] bands)
bands
- 此 ComponentSampleModel
的 band 的子集
ComponentSampleModel
的 band 子集的 ComponentSampleModel
。
RasterFormatException
- 如果 band 数大于此样本模型中的存储单元数。
IllegalArgumentException
- 如果 dataType
不是受支持的数据类型之一public DataBuffer createDataBuffer()
ComponentSampleModel
中的 createDataBuffer
ComponentSampleModel
一致的 DataBuffer
。
IllegalArgumentException
- 如果 dataType
不是受支持的类型之一。public Object getDataElements(int x, int y, Object obj, DataBuffer data)
以下代码说明了如何对一个像素进行从 DataBuffer db1
(其存储布局由 BandedSampleModel bsm1
描述)到 DataBuffer db2
(其存储布局由 BandedSampleModel 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 不为 null 且大小不足以容纳像素数据,则抛出 ArrayIndexOutOfBoundsException。
ComponentSampleModel
中的 getDataElements
x, y
- 像素位置的坐标obj
- 如果不为 null,则为一个用来返回像素数据的基本数组。data
- 包含图像数据的 DataBuffer。
setDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
ComponentSampleModel
中的 getPixel
x, y
- 像素位置的坐标iArray
- 如果不为 null,则返回此数组中的样本data
- 包含图像数据的 DataBuffer
setPixel(int, int, int[], DataBuffer)
public int[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
ComponentSampleModel
中的 getPixels
x, y
- 左上角像素位置的坐标w
- 像素矩形的宽度h
- 像素矩形的高度iArray
- 如果不为 null,则返回此数组中的样本data
- 包含图像数据的 DataBuffer
setPixels(int, int, int, int, int[], DataBuffer)
public int getSample(int x, int y, int b, DataBuffer data)
ComponentSampleModel
中的 getSample
x, y
- 像素位置的坐标b
- 要返回的 banddata
- 包含图像数据的 DataBuffer
setSample(int, int, int, int, DataBuffer)
public float getSampleFloat(int x, int y, int b, DataBuffer data)
ComponentSampleModel
中的 getSampleFloat
x, y
- 像素位置的坐标b
- 要返回的 banddata
- 包含图像数据的 DataBuffer
public double getSampleDouble(int x, int y, int b, DataBuffer data)
ComponentSampleModel
中的 getSampleDouble
x, y
- 像素位置的坐标b
- 要返回的 banddata
- 包含图像数据的 DataBuffer
public int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
ComponentSampleModel
中的 getSamples
x, y
- 左上角像素位置的坐标w
- 像素矩形的宽度h
- 像素矩形的高度b
- 要返回的 bandiArray
- 如果不为 null,则返回此数组中的样本data
- 包含图像数据的 DataBuffer
setSamples(int, int, int, int, int, int[], DataBuffer)
public void setDataElements(int x, int y, Object obj, DataBuffer data)
以下代码说明了如何对一个像素进行从 DataBuffer db1
(其存储布局由 BandedSampleModel bsm1
描述)到 DataBuffer db2
(其存储布局由 BandedSampleModel 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。
ComponentSampleModel
中的 setDataElements
x, y
- 像素位置的坐标obj
- 如果不为 null,则返回此对象中的基本数组data
- 包含图像数据的 DataBuffergetDataElements(int, int, Object, DataBuffer)
public void setPixel(int x, int y, int[] iArray, DataBuffer data)
ComponentSampleModel
中的 setPixel
x, y
- 像素位置的坐标iArray
- int 数组中的输入样本data
- 包含图像数据的 DataBuffergetPixel(int, int, int[], DataBuffer)
public void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
ComponentSampleModel
中的 setPixels
x, y
- 左上角像素位置的坐标w
- 像素矩形的宽度h
- 像素矩形的高度iArray
- int 数组中的输入样本data
- 包含图像数据的 DataBuffergetPixels(int, int, int, int, int[], DataBuffer)
public void setSample(int x, int y, int b, int s, DataBuffer data)
ComponentSampleModel
中的 setSample
x, y
- 像素位置的坐标b
- 要设置的 bands
- 输入的样本(为一个 int 值)data
- 包含图像数据的 DataBuffergetSample(int, int, int, DataBuffer)
public void setSample(int x, int y, int b, float s, DataBuffer data)
ComponentSampleModel
中的 setSample
x, y
- 像素位置的坐标b
- 要设置的 bands
- 输入的样本(为一个 float 值)data
- 包含图像数据的 DataBuffergetSample(int, int, int, DataBuffer)
public void setSample(int x, int y, int b, double s, DataBuffer data)
ComponentSampleModel
中的 setSample
x, y
- 像素位置的坐标b
- 要设置的 bands
- 输入的样本(为一个 double 值)data
- 包含图像数据的 DataBuffergetSample(int, int, int, DataBuffer)
public void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
ComponentSampleModel
中的 setSamples
x, y
- 左上角像素位置的坐标w
- 像素矩形的宽度h
- 像素矩形的高度b
- 要设置的 bandiArray
- 输入的样本数组data
- 包含图像数据的 DataBuffergetSamples(int, int, int, int, int, int[], DataBuffer)
public int hashCode()
Object
复制的描述java.util.Hashtable
提供的哈希表。
hashCode
的常规协定是:
hashCode
方法都必须生成相同的整数结果。
Object.equals(java.lang.Object)
方法,两个对象不相等,那么在两个对象中的任一对象上调用 hashCode 方法必定会生成不同的整数结果。但是,程序员应该知道,为不相等的对象生成不同整数结果可以提高哈希表的性能。
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)
ComponentSampleModel
中的 hashCode
Object.equals(java.lang.Object)
,
Hashtable
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。