| 
JavaTM 2 Platform Standard Ed. 5.0  | 
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
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 表示的、像素 (x, y) 指定 band 中的采样。 | 
 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,设置 DataBuffer 中位于 (x,y) 的像素的指定 band 中的采样。 | 
| 从类 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 - 指定的高度
MultiPixelPackedSampleModel 相同的存储数据类型和每像素位数的 SampleModel。
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, 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 参数的长度必须为一并指示第零个 band。
SampleModel 中的 createSubsetSampleModelbands - 指定的 band
MultiPixelPackedSampleModel 带子集的新 SampleModel。
RasterFormatException - 如果请求的 band 数不是一。
IllegalArgumentException - 如果 w 或 h 不大于 0
public int getSample(int x,
                     int y,
                     int b,
                     DataBuffer data)
int 表示的、像素 (x, y) 指定 band 中的采样。如果坐标超出了范围,则抛出 ArrayIndexOutOfBoundsException。
SampleModel 中的 getSamplex, 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,设置 DataBuffer 中位于 (x,y) 的像素的指定 band 中的采样。如果坐标超出了范围,则抛出 ArrayIndexOutOfBoundsException。
SampleModel 中的 setSamplex, 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, 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, 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, y - 像素位置的坐标obj - 包含像素数据的基本数组data - 包含图像数据的 DataBuffergetDataElements(int, int, Object, DataBuffer)
public void setPixel(int x,
                     int y,
                     int[] iArray,
                     DataBuffer data)
int 数组设置 DataBuffer 中的某个像素。如果坐标超出了范围,则抛出 ArrayIndexOutOfBoundsException。
SampleModel 中的 setPixelx, 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 2 Platform Standard Ed. 5.0  | 
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。