|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjava.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 形式返回指定 band 中对应于 (x,y) 处像素的样本。 |
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 设置指定 band 中对应于 DataBuffer (x,y) 处像素的样本。 |
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 中的 getNumDataElementsSampleModel.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 中的 createCompatibleSampleModelw - 得到的 SampleModel 的宽度h - 得到的 SampleModel 的高度
SinglePixelPackedSampleModel。
IllegalArgumentException - 如果 w 或 h 不大于 0public DataBuffer createDataBuffer()
SampleModel 中的 createDataBufferSampleModel 的 DataBuffer。public int[] getSampleSize()
SampleModel 中的 getSampleSizepublic int getSampleSize(int band)
SampleModel 中的 getSampleSizeband - 指定的 band
public int getOffset(int x,
int y)
x,y 的数据元素可以使用 SinglePixelPackedSampleModel sppsm 从 DataBuffer data 中检索:
data.getElem(sppsm.getOffset(x, y));
x - 指定像素的 X 坐标y - 指定像素的 Y 坐标
public int[] getBitOffsets()
public int[] getBitMasks()
public int getScanlineStride()
SinglePixelPackedSampleModel 的扫描行间距。public SampleModel createSubsetSampleModel(int[] bands)
SampleModel 中的 createSubsetSampleModelbands - 此 SampleModel 的 band 子集
SampleModel band 子集的 SampleModel。
RasterFormatException - 如果 band 参数的长度大于样本模型中 band 的数量。
public Object getDataElements(int x,
int y,
Object obj,
DataBuffer data)
以下代码说明了如何将一个像素的数据从 DataBuffer db1(其存储布局由 SinglePixelPackedSampleModel sppsm1 描述)传输到 DataBuffer db2(其存储布局由 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 中的 getDataElementsx - 像素位置的 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 中的 getPixelx - 像素位置的 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 中的 getPixelsx - 左上角像素位置的 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 中的 getSamplex - 像素位置的 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 中的 getSamplesx - 左上角像素位置的 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(其存储布局由 SinglePixelPackedSampleModel sppsm1 描述)传输到 DataBuffer db2(其存储布局由 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 中的 setDataElementsx - 像素位置的 X 坐标。y - 像素位置的 Y 坐标。obj - 包含像素数据的基本数组。data - 包含图像数据的 DataBuffer。getDataElements(int, int, Object, DataBuffer)
public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
SampleModel 中的 setPixelx - 像素位置的 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 中的 setPixelsx - 左上角像素位置的 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 中的 setSamplex - 像素位置的 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 中的 setSamplesx - 左上角像素位置的 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 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
Object 中的 equalso - 要与之比较的引用对象。
true;否则返回 false。Object.hashCode(),
Hashtablepublic int hashCode()
Object 复制的描述java.util.Hashtable 提供的哈希表)的性能。
hashCode 的常规协定是:
hashCode 方法都必须生成相同的整数结果。
Object.equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)
Object 中的 hashCodeObject.equals(java.lang.Object),
Hashtable
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。