|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.awt.image.SampleModel java.awt.image.SinglePixelPackedSampleModel
public class SinglePixelPackedSampleModel
此类表示压缩的像素数据:将 N 个样本组成的单个像素存储在单个数据数组元素中,每个数据数组元素只保存一个像素的样本。此类支持 TYPE_BYTE
、TYPE_USHORT
和 TYPE_INT
数据类型。所有数据数组元素都位于 DataBuffer 的第一个存储单元中。该类提供了一些存取器方法,以便直接操作图像数据。扫描行跨距是给定样本和下一个扫描行同一列中对应样本之间的数据数组元素的数量。位掩码是提取表示像素 band 的样本所需的掩码。位偏移量是表示像素 band 的样本的数据数组元素中位的偏移量。
以下代码阐释了如何从 DataBuffer data
中提取表示像素 x,y
的 band b
的样本位:
int sample = data.getElem(y * scanlineStride + x); sample = (sample & bitMasks[b]) >>> bitOffsets[b];
字段摘要 |
---|
从类 java.awt.image.SampleModel 继承的字段 |
---|
dataType, height, numBands, width |
构造方法摘要 | |
---|---|
SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int[] bitMasks)
构造一个具有 bitMasks.length band 的 SinglePixelPackedSampleModel。 |
|
SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int scanlineStride,
int[] bitMasks)
构造一个 SinglePixelPackedSampleModel,它具有 bitMasks.length band,并且扫描行跨距等于 scanlineStride 数据数组元素。 |
方法摘要 | |
---|---|
SampleModel |
createCompatibleSampleModel(int w,
int h)
创建一个具有指定宽度和高度的新 SinglePixelPackedSampleModel。 |
DataBuffer |
createDataBuffer()
创建一个对应于此 SinglePixelPackedSampleModel 的 DataBuffer。 |
SampleModel |
createSubsetSampleModel(int[] bands)
创建一个新 SinglePixelPackedSampleModel,它具有此 SinglePixelPackedSampleModel 的 band 子集。 |
boolean |
equals(Object o)
指示某个其他对象是否与此对象“相等”。 |
int[] |
getBitMasks()
返回所有 band 的位掩码。 |
int[] |
getBitOffsets()
返回表示所有 band 的一个像素的数据数组元素中的位偏移量。 |
Object |
getDataElements(int x,
int y,
Object obj,
DataBuffer data)
返回 TransferType 类型的基本数组中单个像素的数据。 |
int |
getNumDataElements()
返回通过 getDataElements 和 setDataElements 方法传输一个像素所需的数据元素数。 |
int |
getOffset(int x,
int y)
返回像素 (x,y)(在数据数组元素中)的偏移量。 |
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)
以 int 形式返回 (x,y) 处像素的指定 band 中的样本。 |
int[] |
getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
在一个 int 型数组中返回指定像素矩形的指定 band 的样本,每个数组元素一个样本。 |
int[] |
getSampleSize()
返回所有 band 的每个样本的位数。 |
int |
getSampleSize(int band)
返回指定 band 的每个样本的位数。 |
int |
getScanlineStride()
返回此 SinglePixelPackedSampleModel 的扫描行跨距。 |
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,
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.SampleModel 继承的方法 |
---|
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSample, setSample, setSamples, setSamples |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public SinglePixelPackedSampleModel(int dataType, int w, int h, int[] bitMasks)
dataType
- 存储样本使用的数据类型。w
- 所描述的图像数据区域的(像素)宽度。h
- 所描述的图像数据区域的(像素)高度。bitMasks
- 所有 band 的位掩码。
IllegalArgumentException
- 如果 dataType
不是 DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
或 DataBuffer.TYPE_INT
public SinglePixelPackedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bitMasks)
dataType
- 存储样本使用的数据类型。w
- 所描述的图像数据区域的(像素)宽度。h
- 所描述的图像数据区域的(像素)高度。scanlineStride
- 图像数据的行跨距。bitMasks
- 所有 band 的位掩码。
IllegalArgumentException
- 如果 w
或 h
不大于 0
IllegalArgumentException
- 如果 bitMask
中的任何掩码不相邻
IllegalArgumentException
- 如果 dataType
不是 DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
或 DataBuffer.TYPE_INT
方法详细信息 |
---|
public int getNumDataElements()
SampleModel
中的 getNumDataElements
SampleModel.getDataElements(int, int, Object, DataBuffer)
,
SampleModel.getDataElements(int, int, int, int, Object, DataBuffer)
,
SampleModel.setDataElements(int, int, Object, DataBuffer)
,
SampleModel.setDataElements(int, int, int, int, Object, DataBuffer)
,
SampleModel.getTransferType()
public SampleModel createCompatibleSampleModel(int w, int h)
SampleModel
中的 createCompatibleSampleModel
w
- 得到的 SampleModel
的宽度h
- 得到的 SampleModel
的高度
SinglePixelPackedSampleModel
。
IllegalArgumentException
- 如果 w
或 h
不大于 0public DataBuffer createDataBuffer()
SampleModel
中的 createDataBuffer
SampleModel
的 DataBuffer
。public int[] getSampleSize()
SampleModel
中的 getSampleSize
public int getSampleSize(int band)
SampleModel
中的 getSampleSize
band
- 指定的 band
public int getOffset(int x, int y)
x,y
的数据元素可以使用 SinglePixelPackedSampleModel sppsm
从 DataBuffer data
中检索:
data.getElem(sppsm.getOffset(x, y));
x, y
- 指定像素的坐标
public int[] getBitOffsets()
public int[] getBitMasks()
public int getScanlineStride()
SinglePixelPackedSampleModel
的扫描行跨距。public SampleModel createSubsetSampleModel(int[] bands)
SampleModel
中的 createSubsetSampleModel
bands
- 此 SampleModel
的 band 子集
SampleModel
的 band 子集的 SampleModel
。
RasterFormatException
- 如果 band 参数的长度大于样本模型中 band 的数量。public Object getDataElements(int x, int y, Object obj, DataBuffer data)
以下代码阐释了如何将一个像素的数据从 DataBuffer db1
传输到 DataBuffer db2
,前者的存储布局由 SinglePixelPackedSampleModel sppsm1
描述,后者的存储布局由 SinglePixelPackedSampleModel sppsm2
描述。该传输通常比使用 getPixel/setPixel 更有效。
SinglePixelPackedSampleModel sppsm1, sppsm2; DataBufferInt db1, db2; sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null, db1), db2);如果 SampleModel 具有相同的 band 数量,相应 band 的每个样本具有相同的位数,且 TransferType 相同,则使用 getDataElements/setDataElements 在两个 DataBuffer/SampleModel 对之间传输是合法的。
如果 obj 为非 null,则它应是 TransferType 类型的基本数组。否则抛出 ClassCastException。如果坐标不在范围内,或者 obj 为非 null 且大小不足以保存像素数据,则抛出 ArrayIndexOutOfBoundsException。
SampleModel
中的 getDataElements
x
- 像素位置的 X 坐标。y
- 像素位置的 Y 坐标。obj
- 如果为非 null,则 obj 是返回像素数据的基本数组。data
- 包含图像数据的 DataBuffer。
setDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
SampleModel
中的 getPixel
x
- 像素位置的 X 坐标。y
- 像素位置的 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)
SampleModel
中的 getPixels
x
- 左上角像素位置的 X 坐标。y
- 左上角像素位置的 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)
SampleModel
中的 getSample
x
- 像素位置的 X 坐标。y
- 像素位置的 Y 坐标。b
- 要返回的 band。data
- 包含图像数据的 DataBuffer。
setSample(int, int, int, int, DataBuffer)
public int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
SampleModel
中的 getSamples
x
- 左上角像素位置的 X 坐标。y
- 左上角像素位置的 Y 坐标。w
- 像素矩形的宽度。h
- 像素矩形的高度。b
- 要返回的 band。iArray
- 如果为非 null,则在此数组中返回样本。data
- 包含图像数据的 DataBuffer。
setSamples(int, int, int, int, int, int[], DataBuffer)
public void setDataElements(int x, int y, Object obj, DataBuffer data)
以下代码阐释了如何将一个像素的数据从 DataBuffer db1
传输到 DataBuffer db2
,前者的存储布局由 SinglePixelPackedSampleModel sppsm1
描述,后者的存储布局由 SinglePixelPackedSampleModel sppsm2
描述。该传输通常比使用 getPixel/setPixel 更有效。
SinglePixelPackedSampleModel sppsm1, sppsm2; DataBufferInt db1, db2; sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null, db1), db2);如果 SampleModel 具有相同的 band 数量,相应 band 的每个样本具有相同的位数,且 TransferType 相同,则使用 getDataElements/setDataElements 在两个 DataBuffer/SampleModel 对之间传输是合法的。
obj 必须是 TransferType 类型的基本数组。否则抛出 ClassCastException。如果坐标不在范围内,或者 obj 的大小不足以容纳像素数据,则抛出 ArrayIndexOutOfBoundsException。
SampleModel
中的 setDataElements
x
- 像素位置的 X 坐标。y
- 像素位置的 Y 坐标。obj
- 包含像素数据的基本数组。data
- 包含图像数据的 DataBuffer。getDataElements(int, int, Object, DataBuffer)
public void setPixel(int x, int y, int[] iArray, DataBuffer data)
SampleModel
中的 setPixel
x
- 像素位置的 X 坐标。y
- 像素位置的 Y 坐标。iArray
- int 数组中的输入样本。data
- 包含图像数据的 DataBuffer。getPixel(int, int, int[], DataBuffer)
public void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
SampleModel
中的 setPixels
x
- 左上角像素位置的 X 坐标。y
- 左上角像素位置的 Y 坐标。w
- 像素矩形的宽度。h
- 像素矩形的高度。iArray
- int 数组中的输入样本。data
- 包含图像数据的 DataBuffer。getPixels(int, int, int, int, int[], DataBuffer)
public void setSample(int x, int y, int b, int s, DataBuffer data)
SampleModel
中的 setSample
x
- 像素位置的 X 坐标。y
- 像素位置的 Y 坐标。b
- 要设置的 band。s
- int 形式的输入样本。data
- 包含图像数据的 DataBuffer。getSample(int, int, int, DataBuffer)
public void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
SampleModel
中的 setSamples
x
- 左上角像素位置的 X 坐标。y
- 左上角像素位置的 Y 坐标。w
- 像素矩形的宽度。h
- 像素矩形的高度。b
- 要设置的 band。iArray
- int 数组中的输入样本。data
- 包含图像数据的 DataBuffer。getSamples(int, int, int, int, int, int[], DataBuffer)
public boolean equals(Object o)
Object
复制的描述
equals
方法在非空对象引用上实现相等关系:
x
,x.equals(x)
都应返回 true
。
x
和 y
,当且仅当 y.equals(x)
返回 true
时,x.equals(y)
才应返回 true
。
x
、y
和 z
,如果 x.equals(y)
返回 true
,并且 y.equals(z)
返回 true
,那么 x.equals(z)
应返回 true
。
x
和 y
,多次调用 x.equals(y) 始终返回 true
或始终返回 false
,前提是对象上 equals
比较中所用的信息没有被修改。
x
,x.equals(null)
都应返回 false
。
Object
类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x
和 y
,当且仅当 x
和 y
引用同一个对象时,此方法才返回 true
(x == y
具有值 true
)。
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
o
- 要与之比较的引用对象。
true
;否则返回 false
。Object.hashCode()
,
Hashtable
public int hashCode()
Object
复制的描述java.util.Hashtable
提供的哈希表。
hashCode
的常规协定是:
hashCode
方法都必须生成相同的整数结果。
Object.equals(java.lang.Object)
方法,两个对象不相等,那么在两个对象中的任一对象上调用 hashCode 方法必定会生成不同的整数结果。但是,程序员应该知道,为不相等的对象生成不同整数结果可以提高哈希表的性能。
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)
Object.equals(java.lang.Object)
,
Hashtable
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。