| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjava.awt.image.SampleModel
java.awt.image.ComponentSampleModel
java.awt.image.BandedSampleModel
public final class BandedSampleModel
此类表示以 band 交错方式存储的图像数据,像素的每个样本都占用 DataBuffer 的一个数据元素。此类是 ComponentSampleModel 的子类,但是对于访问 band 交错图像数据来说,它提供的实现比 ComponentSampleModel 提供的实现更有效。当处理存储在不同 DataBuffer 存储单元中每个 band 样本数据的图像时,通常应该使用此类。由于提供了存取方法,因此可以直接对图像数据进行操作。像素间距是同一 扫描行上同一 band 的两个样本之间的数据数组元素数。BandedSampleModel 的像素间距为 1。扫描行间距是给定样本与下一扫描行的同一列中对应样本之间的数据数组元素数。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)以 int 形式返回指定 band 中对应于 (x,y) 处像素的样本。 | 
|  double | getSampleDouble(int x,
                int y,
                int b,
                DataBuffer data)以 double 形式返回指定 band 中对应于 (x,y) 处像素的样本。 | 
|  float | getSampleFloat(int x,
               int y,
               int b,
               DataBuffer data)以 float 形式返回指定 band 中对应于 (x,y) 处像素的样本。 | 
|  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 数组设置对应于像素矩形的所有样本,int 数组中每个数组元素包含一个样本。 | 
|  void | setSample(int x,
          int y,
          int b,
          double s,
          DataBuffer data)使用输入的 double 值设置指定 band 中对应于 DataBuffer 中 (x,y) 处像素的样本。 | 
|  void | setSample(int x,
          int y,
          int b,
          float s,
          DataBuffer data)使用输入的 float 值设置指定 band 中对应于 DataBuffer 中 (x,y) 处像素的样本。 | 
|  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 中对应于指定像素矩形的样本,int 数组中每个数据数组元素包含一个样本。 | 
| 从类 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)
ComponentSampleModel 中的 createCompatibleSampleModelw - 得到的 BandedSampleModel 的宽度h - 得到的 BandedSampleModel 的高度
BandedSampleModel。
IllegalArgumentException - 如果 w 或 h 等于 Integer.MAX_VALUE 或 Integer.MIN_VALUE
IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一public SampleModel createSubsetSampleModel(int[] bands)
ComponentSampleModel 中的 createSubsetSampleModelbands - 此 ComponentSampleModel 的 band 子集
ComponentSampleModel band 子集的 ComponentSampleModel。
RasterFormatException - 如果 band 数大于此样本模型中的存储单元数。
IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一public DataBuffer createDataBuffer()
ComponentSampleModel 中的 createDataBufferComponentSampleModel 一致的 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);
 
如果两个 SampleModel 具有相同的 band 数,相应 band 的每个样本具有相同的位数,且 TransferType 相同,则使用 getDataElements/setDataElements 在这两个 DataBuffer/SampleModel 对之间传输数据是合法的。
 如果 obj 不为 null,则它应该是一个 TransferType 类型基本数组。否则抛出 ClassCastException。如果坐标不在边界内部,或者 obj 不为 null 且大小不足以容纳像素数据,则抛出 ArrayIndexOutOfBoundsException。
ComponentSampleModel 中的 getDataElementsx - 像素位置的 X 坐标y - 像素位置的 Y 坐标obj - 如果不为 null,则为一个接收返回像素数据的基本数组。data - 包含图像数据的 DataBuffer。
setDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x,
                      int y,
                      int[] iArray,
                      DataBuffer data)
ComponentSampleModel 中的 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)
ComponentSampleModel 中的 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)
ComponentSampleModel 中的 getSamplex - 像素位置的 X 坐标y - 像素位置的 Y 坐标b - 要返回的 banddata - 包含图像数据的 DataBuffer
setSample(int, int, int, int, DataBuffer)
public float getSampleFloat(int x,
                            int y,
                            int b,
                            DataBuffer data)
ComponentSampleModel 中的 getSampleFloatx - 像素位置的 X 坐标y - 像素位置的 Y 坐标b - 要返回的 banddata - 包含图像数据的 DataBuffer
public double getSampleDouble(int x,
                              int y,
                              int b,
                              DataBuffer data)
ComponentSampleModel 中的 getSampleDoublex - 像素位置的 X 坐标y - 像素位置的 Y 坐标b - 要返回的 banddata - 包含图像数据的 DataBuffer
public int[] getSamples(int x,
                        int y,
                        int w,
                        int h,
                        int b,
                        int[] iArray,
                        DataBuffer data)
ComponentSampleModel 中的 getSamplesx - 左上角像素位置的 X 坐标y - 左上角像素位置的 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 中的 setDataElementsx - 像素位置的 X 坐标y - 像素位置的 Y 坐标obj - 如果不为 null,则返回此对象中的基本数组data - 包含图像数据的 DataBuffergetDataElements(int, int, Object, DataBuffer)
public void setPixel(int x,
                     int y,
                     int[] iArray,
                     DataBuffer data)
ComponentSampleModel 中的 setPixelx - 像素位置的 X 坐标y - 像素位置的 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 中的 setPixelsx - 像素位置左上角的 X 坐标y - 像素位置左上角的 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 中的 setSamplex - 像素位置的 X 坐标y - 像素位置的 Y 坐标b - 要设置的 bands - 输入的样本(int 形式)data - 包含图像数据的 DataBuffergetSample(int, int, int, DataBuffer)
public void setSample(int x,
                      int y,
                      int b,
                      float s,
                      DataBuffer data)
ComponentSampleModel 中的 setSamplex - 像素位置的 X 坐标y - 像素位置的 Y 坐标b - 要设置的 bands - 输入的样本(float 形式)data - 包含图像数据的 DataBuffergetSample(int, int, int, DataBuffer)
public void setSample(int x,
                      int y,
                      int b,
                      double s,
                      DataBuffer data)
ComponentSampleModel 中的 setSamplex - 像素位置的 X 坐标y - 像素位置的 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 中的 setSamplesx - 像素位置左上角的 X 坐标y - 像素位置左上角的 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 中的 hashCodeObject.equals(java.lang.Object), 
Hashtable| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。