|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjava.awt.image.SampleModel
java.awt.image.MultiPixelPackedSampleModel
public class MultiPixelPackedSampleModel
MultiPixelPackedSampleModel 类表示单 band 图像,能够将多个单样本像素打包到一个数据元素中。像素不能跨越数据元素。数据类型可以是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT。每个像素必须是位数的 2 的次幂,像素数的 2 的次幂也必须正好能放入一个数据元素。像素位的间距等于每个像素的位数。扫描行间距在数据元素中,最后几个数据元素可以由未使用的像素填充。数据位的偏移量是从 DataBuffer 起始处到第一个像素的位偏移量,必须是像素位间距的倍数。
以下代码说明了如何从 DataBuffer data 中提取像素 x, y 的位并将像素数据存储到 dataType 类型的数据元素中:
int dataElementSize = DataBuffer.getDataTypeSize(dataType);
int bitnum = dataBitOffset + x*pixelBitStride;
int element = data.getElem(y*scanlineStride + bitnum/dataElementSize);
int shift = dataElementSize - (bitnum & (dataElementSize-1))
- pixelBitStride;
int pixel = (element >> shift) & ((1 << pixelBitStride) - 1);
| 字段摘要 |
|---|
| 从类 java.awt.image.SampleModel 继承的字段 |
|---|
dataType, height, numBands, width |
| 构造方法摘要 | |
|---|---|
MultiPixelPackedSampleModel(int dataType,
int w,
int h,
int numberOfBits)
构造一个具有指定数据类型、宽度、高度和每像素位数的 MultiPixelPackedSampleModel。 |
|
MultiPixelPackedSampleModel(int dataType,
int w,
int h,
int numberOfBits,
int scanlineStride,
int dataBitOffset)
构造一个具有指定数据类型、宽度、高度、每像素位数、扫描行间距和数据位偏移量的 MultiPixelPackedSampleModel。 |
|
| 方法摘要 | |
|---|---|
SampleModel |
createCompatibleSampleModel(int w,
int h)
构造一个具有指定宽度和高度的新 MultiPixelPackedSampleModel。 |
DataBuffer |
createDataBuffer()
创建一个与此 MultiPixelPackedSampleModel 对应的 DataBuffer。 |
SampleModel |
createSubsetSampleModel(int[] bands)
创建一个具有此 MultiPixelPackedSampleModel band 子集的新 MultiPixelPackedSampleModel。 |
boolean |
equals(Object o)
指示其他某个对象是否与此对象“相等”。 |
int |
getBitOffset(int x)
返回数据元素中存储扫描行第 x 个像素的偏移量(以位为单位)。 |
int |
getDataBitOffset()
返回数据位的偏移量(以位为单位)。 |
Object |
getDataElements(int x,
int y,
Object obj,
DataBuffer data)
返回 TransferType 类型基本数组中单个像素的数据。 |
int |
getNumDataElements()
返回通过 getDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) 和 setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) 方法传输一个像素所需的数据元素数。 |
int |
getOffset(int x,
int y)
返回数据数组元素中像素 (x, y) 的偏移量。 |
int[] |
getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
返回 int 数组第一个元素中的指定单个 band 像素。 |
int |
getPixelBitStride()
返回像素位间距,以位为单位。 |
int |
getSample(int x,
int y,
int b,
DataBuffer data)
以 int 形式返回指定 band 中对应于 (x, y) 处像素的样本。 |
int[] |
getSampleSize()
返回所有 band 的每样本位数。 |
int |
getSampleSize(int band)
返回指定 band 的每样本位数。 |
int |
getScanlineStride()
返回扫描行的间距。 |
int |
getTransferType()
返回通过 getDataElements 和 setDataElements 方法传输像素所使用的 TransferType。 |
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 |
setSample(int x,
int y,
int b,
int s,
DataBuffer data)
使用输入的 int,设置指定 band 中对应于 DataBuffer (x,y) 处像素的样本。 |
| 从类 java.awt.image.SampleModel 继承的方法 |
|---|
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getSamples, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setPixels, setSample, setSample, setSamples, setSamples, setSamples |
| 从类 java.lang.Object 继承的方法 |
|---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
| 构造方法详细信息 |
|---|
public MultiPixelPackedSampleModel(int dataType,
int w,
int h,
int numberOfBits)
MultiPixelPackedSampleModel。
dataType - 存储样本的数据类型w - 所描述的图像数据区域的宽度,以像素为单位h - 所描述的图像数据区域的高度,以像素为单位numberOfBits - 每个像素的位数
IllegalArgumentException - 如果 dataType 不是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT
public MultiPixelPackedSampleModel(int dataType,
int w,
int h,
int numberOfBits,
int scanlineStride,
int dataBitOffset)
MultiPixelPackedSampleModel。
dataType - 存储采用的数据类型w - 所描述的图像数据区域的宽度,以像素为单位h - 所描述的图像数据区域的高度,以像素为单位numberOfBits - 每个像素的位数scanlineStride - 图像数据的行间距dataBitOffset - 所描述的图像数据区域的数据位偏移量
RasterFormatException - 如果每像素位数不是 2 的次幂,或者像素数的 2 的次幂不能放入一个数据元素。
IllegalArgumentException - 如果 w 或 h 不大于 0
IllegalArgumentException - 如果 dataType 不是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT| 方法详细信息 |
|---|
public SampleModel createCompatibleSampleModel(int w,
int h)
MultiPixelPackedSampleModel。这个新 MultiPixelPackedSampleModel 具有与此 MultiPixelPackedSampleModel 相同的存储数据类型和每像素位数。
SampleModel 中的 createCompatibleSampleModelw - 指定的宽度h - 指定的高度
SampleModel,具有指定宽度和高度,并且具有与此 MultiPixelPackedSampleModel 相同的存储数据类型和每像素位数。
IllegalArgumentException - 如果 w 或 h 不大于 0public DataBuffer createDataBuffer()
MultiPixelPackedSampleModel 对应的 DataBuffer。该 DataBuffer 对象的数据类型和大小与此 MultiPixelPackedSampleModel 一致。DataBuffer 具有单个存储单元。
SampleModel 中的 createDataBufferMultiPixelPackedSampleModel 相同的 DataBuffer。public int getNumDataElements()
getDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) 和 setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) 方法传输一个像素所需的数据元素数。对于 MultiPixelPackedSampleModel,该值是一。
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 int[] getSampleSize()
SampleModel 中的 getSampleSizepublic int getSampleSize(int band)
SampleModel 中的 getSampleSizeband - 指定的 band
public int getOffset(int x,
int y)
x - 指定像素的 X 坐标y - 指定像素的 Y 坐标
public int getBitOffset(int x)
x 个像素的偏移量(以位为单位)。此偏移量对于所有扫描行都相同。
x - 指定的像素
public int getScanlineStride()
MultiPixelPackedSampleModel 的扫描行间距。public int getPixelBitStride()
MultiPixelPackedSampleModel 的 pixelBitStride。public int getDataBitOffset()
MultiPixelPackedSampleModel 的 dataBitOffset。public int getTransferType()
getDataElements 和 setDataElements 方法传输像素所使用的 TransferType。该 TransferType 可能与存储 DataType 相同,也可能不同。TransferType 是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT 之一。
SampleModel 中的 getTransferTypeSampleModel.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.getNumDataElements(),
DataBufferpublic SampleModel createSubsetSampleModel(int[] bands)
MultiPixelPackedSampleModel band 子集的新 MultiPixelPackedSampleModel。因为 MultiPixelPackedSampleModel 只有一个 band,所以 bands 参数的长度必须为 1,指示第 0 个 band。
SampleModel 中的 createSubsetSampleModelbands - 指定的 band
MultiPixelPackedSampleModel band 子集的新 SampleModel。
RasterFormatException - 如果请求的 band 数不是 1。
IllegalArgumentException - 如果 w 或 h 不大于 0
public int getSample(int x,
int y,
int b,
DataBuffer data)
int 形式返回指定 band 中对应于 (x, y) 处像素的样本。如果坐标超出了范围,则抛出 ArrayIndexOutOfBoundsException。
SampleModel 中的 getSamplex - 指定像素的 X 坐标y - 指定像素的 Y 坐标b - 返回的 band,假定为 0data - 包含图像数据的 DataBuffer
ArrayIndexOutOfBoundException - 如果指定的坐标超出了范围。setSample(int, int, int, int, DataBuffer)
public void setSample(int x,
int y,
int b,
int s,
DataBuffer data)
int,设置指定 band 中对应于 DataBuffer (x,y) 处像素的样本。如果坐标超出了范围,则抛出 ArrayIndexOutOfBoundsException。
SampleModel 中的 setSamplex - 指定像素的 X 坐标y - 指定像素的 Y 坐标b - 返回的 band,假定为 0s - int 形式的输入样本data - 存储图像数据的 DataBuffer
ArrayIndexOutOfBoundsException - 如果坐标超出了范围。getSample(int, int, int, DataBuffer)
public Object getDataElements(int x,
int y,
Object obj,
DataBuffer data)
MultiPixelPackedSampleModel,该数组有一个元素,类型为可保存单个像素的 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT 中的最小值。通常,obj 作为 null 传入,从而 Object 将被自动创建,并具有正确的基本数据类型。
以下代码说明了如何将一个像素的数据从 DataBuffer db1(其存储布局由 MultiPixelPackedSampleModel mppsm1 描述)传输到 DataBuffer db2(其存储布局由 MultiPixelPackedSampleModel mppsm2 描述)。该传输通常比使用 getPixel 或 setPixel 更为高效。
MultiPixelPackedSampleModel mppsm1, mppsm2;
DataBufferInt db1, db2;
mppsm2.setDataElements(x, y, mppsm1.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。data - 包含图像数据的 DataBuffer。
Object。
ClassCastException - 如果 obj 不是 TransferType 类型的基本数组,或者不为 null
ArrayIndexOutOfBoundsException - 如果坐标超出了范围,或者 obj 不为 null 或其大小不足以保存该像素数据setDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
int 数组第一个元素中的指定单个 band 像素。如果坐标超出了范围,则抛出 ArrayIndexOutOfBoundsException。
SampleModel 中的 getPixelx - 像素位置的 X 坐标y - 像素位置的 Y 坐标iArray - 包含要返回像素的数组,或者为 nulldata - 存储图像数据的 DataBuffer
ArrayIndexOutOfBoundsException - 如果坐标超出了范围范围setPixel(int, int, int[], DataBuffer)
public void setDataElements(int x,
int y,
Object obj,
DataBuffer data)
DataBuffer 中单个像素的数据。对于 MultiPixelPackedSampleModel,只有数组的第一个元素才保存有效数据,类型必须为可以保存单个像素的 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT 的最小值。
以下代码说明了如何将一个像素的数据从 DataBuffer db1(其存储布局由 MultiPixelPackedSampleModel mppsm1 所描述)传输到 DataBuffer db2(其存储布局由 MultiPixelPackedSampleModel mppsm2 所描述)。该传输通常比使用 getPixel 或 setPixel 更为高效。
MultiPixelPackedSampleModel mppsm1, mppsm2;
DataBufferInt db1, db2;
mppsm2.setDataElements(x, y, mppsm1.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 - 包含图像数据的 DataBuffergetDataElements(int, int, Object, DataBuffer)
public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
int 数组设置 DataBuffer 中的某个像素。如果坐标超出了范围,则抛出 ArrayIndexOutOfBoundsException。
SampleModel 中的 setPixelx - 像素位置的 X 坐标y - 像素位置的 Y 坐标iArray - int 数组中的输入像素data - 包含图像数据的 DataBuffergetPixel(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. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。