Module java.desktop
Package java.awt.image

Class SampleModel

java.lang.Object
java.awt.image.SampleModel
直接已知的子类:
ComponentSampleModel, MultiPixelPackedSampleModel, SinglePixelPackedSampleModel

public abstract class SampleModel extends Object
这个抽象类定义了一个接口,用于提取图像中像素的样本。所有图像数据都表示为像素的集合。每个像素由多个样本组成。一个样本是图像中一个波段的数据,一个波段包含图像中特定类型的所有样本。例如,一个像素可能包含三个样本,分别代表其红色、绿色和蓝色分量。图像中包含这个像素的三个波段。一个波段包含图像中所有像素的所有红色样本。第二个波段包含所有绿色样本,剩下的波段包含所有蓝色样本。像素可以以各种格式存储。例如,可以将来自特定波段的所有样本连续存储,或者可以将来自单个像素的所有样本连续存储。

SampleModel的子类指定它们可以表示的样本类型(例如,无符号8位字节,有符号16位短整型等),并且可以指定样本在内存中的组织方式。在Java 2D(tm) API中,内置的图像处理运算符可能不适用于所有可能的样本类型,但通常适用于16位或更少位的无符号整型样本。一些运算符支持更广泛的样本类型。

像素的集合表示为一个Raster,它由一个DataBuffer和一个SampleModel组成。SampleModel允许访问DataBuffer中的样本,并且可能提供程序员可以使用的低级信息,以直接操作DataBuffer中的样本和像素。

这个类通常是处理图像的后备方法。更有效的代码将把SampleModel转换为适当的子类,并提取所需的信息,以直接操作DataBuffer中的像素。

参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected int
    存储像素数据的DataBuffer的数据类型。
    protected int
    描述此SampleModel的图像数据区域的像素高度。
    protected int
    描述此SampleModel的图像数据的波段数。
    protected int
    描述此SampleModel的图像数据区域的像素宽度。
  • Constructor Summary

    Constructors
    Constructor
    Description
    SampleModel(int dataType, int w, int h, int numBands)
    使用指定的参数构造SampleModel。
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract SampleModel
    createCompatibleSampleModel(int w, int h)
    创建一个描述此SampleModel格式中数据的SampleModel,但具有不同的宽度和高度。
    abstract DataBuffer
    创建与此SampleModel对应的DataBuffer。
    abstract SampleModel
    createSubsetSampleModel(int[] bands)
    创建一个新的SampleModel,其中包含此SampleModel的部分波段。
    getDataElements(int x, int y, int w, int h, Object obj, DataBuffer data)
    返回类型为TransferType的原始数组中指定像素矩形的像素数据。
    abstract Object
    getDataElements(int x, int y, Object obj, DataBuffer data)
    返回类型为TransferType的原始数组中单个像素的数据。
    final int
    返回存储像素数据的DataBuffer的数据类型。
    final int
    返回像素的高度。
    final int
    返回图像数据的总波段数。
    abstract int
    返回通过getDataElements和setDataElements方法传输像素所需的数据元素数量。
    double[]
    getPixel(int x, int y, double[] dArray, DataBuffer data)
    返回双精度数组中指定像素的样本。
    float[]
    getPixel(int x, int y, float[] fArray, DataBuffer data)
    返回浮点数组中指定像素的样本。
    int[]
    getPixel(int x, int y, int[] iArray, DataBuffer data)
    返回整型数组中指定像素的样本,每个数组元素一个样本。
    double[]
    getPixels(int x, int y, int w, int h, double[] dArray, DataBuffer data)
    返回双精度数组中像素矩形的所有样本,每个数组元素一个样本。
    float[]
    getPixels(int x, int y, int w, int h, float[] fArray, DataBuffer data)
    返回浮点数组中像素矩形的所有样本,每个数组元素一个样本。
    int[]
    getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
    返回整型数组中像素矩形的所有样本,每个数组元素一个样本。
    abstract int
    getSample(int x, int y, int b, DataBuffer data)
    返回位于(x,y)处的像素的指定波段的样本作为整数。
    double
    getSampleDouble(int x, int y, int b, DataBuffer data)
    返回位于(x,y)处的像素的指定波段的样本作为双精度数。
    float
    getSampleFloat(int x, int y, int b, DataBuffer data)
    返回位于(x,y)处的像素的指定波段的样本作为浮点数。
    double[]
    getSamples(int x, int y, int w, int h, int b, double[] dArray, DataBuffer data)
    返回双精度数组中指定像素矩形的指定波段的所有样本,每个数组元素一个样本。
    float[]
    getSamples(int x, int y, int w, int h, int b, float[] fArray, DataBuffer data)
    返回浮点数组中指定像素矩形的指定波段的所有样本,每个数组元素一个样本。
    int[]
    getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
    返回整型数组中指定像素矩形的指定波段的所有样本,每个数组元素一个样本。
    abstract int[]
    返回所有波段样本的位数。
    abstract int
    getSampleSize(int band)
    返回指定波段的样本的位数。
    int
    返回用于通过getDataElements和setDataElements方法传输像素的TransferType。
    final int
    返回像素的宽度。
    void
    setDataElements(int x, int y, int w, int h, Object obj, DataBuffer data)
    从TransferType类型的原始数组中设置指定DataBuffer的像素矩形的数据。
    abstract void
    setDataElements(int x, int y, Object obj, DataBuffer data)
    从TransferType类型的原始数组中设置指定DataBuffer的单个像素的数据。
    void
    setPixel(int x, int y, double[] dArray, DataBuffer data)
    使用双精度样本数组将像素设置到DataBuffer中。
    void
    setPixel(int x, int y, float[] fArray, DataBuffer data)
    使用浮点样本数组将像素设置到DataBuffer中。
    void
    setPixel(int x, int y, int[] iArray, DataBuffer data)
    使用整型样本数组将像素设置到DataBuffer中。
    void
    setPixels(int x, int y, int w, int h, double[] dArray, DataBuffer data)
    从包含一个样本的双精度数组中设置像素矩形的所有样本。
    void
    setPixels(int x, int y, int w, int h, float[] fArray, DataBuffer data)
    从包含一个样本的浮点数组中设置像素矩形的所有样本。
    void
    setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
    从包含一个样本的整型数组中设置像素矩形的所有样本。
    void
    setSample(int x, int y, int b, double s, DataBuffer data)
    使用双精度数将指定波段的像素(位于(x,y)处)设置到DataBuffer中。
    void
    setSample(int x, int y, int b, float s, DataBuffer data)
    使用浮点数将指定波段的像素(位于(x,y)处)设置到DataBuffer中。
    abstract void
    setSample(int x, int y, int b, int s, DataBuffer data)
    使用整数将指定波段的像素(位于(x,y)处)设置到DataBuffer中。
    void
    setSamples(int x, int y, int w, int h, int b, double[] dArray, DataBuffer data)
    从包含一个样本的双精度数组中设置指定像素矩形的指定波段的所有样本。
    void
    setSamples(int x, int y, int w, int h, int b, float[] fArray, DataBuffer data)
    从包含一个样本的浮点数组中设置指定像素矩形的指定波段的所有样本。
    void
    setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
    从包含一个样本的整型数组中设置指定像素矩形的指定波段的所有样本。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • width

      protected int width
      描述此SampleModel的图像数据区域的像素宽度。
    • height

      protected int height
      描述此SampleModel的图像数据区域的像素高度。
    • numBands

      protected int numBands
      描述此SampleModel的图像数据的波段数。
    • dataType

      protected int dataType
      存储像素数据的DataBuffer的数据类型。
      参见:
  • Constructor Details

    • SampleModel

      public SampleModel(int dataType, int w, int h, int numBands)
      使用指定的参数构造SampleModel。
      参数:
      dataType - 存储像素数据的DataBuffer的数据类型。
      w - 图像数据区域的宽度(以像素为单位)。
      h - 图像数据区域的高度(以像素为单位)。
      numBands - 图像数据的波段数。
      抛出:
      IllegalArgumentException - 如果wh不大于0
      IllegalArgumentException - 如果wh的乘积大于Integer.MAX_VALUE
      IllegalArgumentException - 如果dataType不是DataBuffer类中预定义的数据类型标签之一
      IllegalArgumentException - 如果numBands小于1
  • Method Details

    • getWidth

      public final int getWidth()
      返回像素的宽度。
      返回:
      描述此SampleModel所描述的图像数据区域的像素宽度。
    • getHeight

      public final int getHeight()
      返回像素的高度。
      返回:
      描述此SampleModel所描述的图像数据区域的像素高度。
    • getNumBands

      public final int getNumBands()
      返回图像数据的总波段数。
      返回:
      描述此SampleModel所描述的图像数据的波段数。
    • getNumDataElements

      public abstract int getNumDataElements()
      返回通过getDataElements和setDataElements方法传输像素所需的数据元素数量。当通过这些方法传输像素时,它们可能以打包或未打包的格式传输,这取决于SampleModel的实现。使用这些方法,像素作为由getTransferType()给定的原始类型的getNumDataElements()元素数组传输。TransferType可能与存储的DataType相同也可能不同。
      返回值:
      数据元素的数量。
      参见:
    • getDataType

      public final int getDataType()
      返回存储像素数据的DataBuffer的数据类型。
      返回值:
      数据类型。
    • getTransferType

      public int getTransferType()
      返回通过getDataElements和setDataElements方法传输像素的TransferType。当通过这些方法传输像素时,根据SampleModel的实现,它们可能以打包或未打包的格式传输。使用这些方法,像素作为由getTransferType()给定的原始类型的getNumDataElements()元素数组传输。TransferType可能与存储的DataType相同也可能不同。TransferType将是DataBuffer中定义的类型之一。
      返回值:
      传输类型。
      参见:
    • getPixel

      public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
      返回指定像素的样本,以int数组的形式,每个数组元素一个样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 像素位置的X坐标
      y - 像素位置的Y坐标
      iArray - 如果非空,则将样本返回到此数组中
      data - 包含图像数据的DataBuffer
      返回值:
      指定像素的样本。
      抛出:
      NullPointerException - 如果data为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者iArray太小无法容纳输出。
      参见:
    • getDataElements

      public abstract Object getDataElements(int x, int y, Object obj, DataBuffer data)
      返回TransferType类型的原始数组中单个像素的数据。对于Java 2D API支持的图像数据,这将是DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT、DataBuffer.TYPE_SHORT、DataBuffer.TYPE_FLOAT或DataBuffer.TYPE_DOUBLE之一。数据可能以打包格式返回,从而提高数据传输效率。通常,应将obj传递为null,以便自动创建Object,并且将是正确的原始数据类型。

      以下代码示例说明了从由SampleModel sm1描述存储布局的DataBuffer db1中的一个像素传输数据到由SampleModel sm2描述存储布局的DataBuffer db2中。与使用getPixel/setPixel相比,传输通常更有效。

             SampleModel sm1, sm2;
             DataBuffer db1, db2;
             sm2.setDataElements(x, y, sm1.getDataElements(x, y, null, db1), db2);
       
      如果SampleModels具有相同数量的波段,相应波段具有相同数量的每个样本的位数,并且TransferTypes相同,则在两个DataBuffer/SampleModel对之间使用getDataElements/setDataElements是合法的。

      如果obj非空,则应该是TransferType类型的原始数组。否则,将抛出ClassCastException。如果坐标超出范围,或者obj非空且不足以容纳像素数据,则可能会抛出ArrayIndexOutOfBoundsException。

      参数:
      x - 像素位置的X坐标。
      y - 像素位置的Y坐标。
      obj - 如果非空,则用于返回像素数据的原始数组。
      data - 包含图像数据的DataBuffer。
      返回值:
      指定像素的数据元素。
      抛出:
      NullPointerException - 如果data为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者obj太小无法容纳输出。
      参见:
    • getDataElements

      public Object getDataElements(int x, int y, int w, int h, Object obj, DataBuffer data)
      返回指定像素矩形的像素数据,以TransferType类型的原始数组形式。对于Java 2D API支持的图像数据,这将是DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT、DataBuffer.TYPE_SHORT、DataBuffer.TYPE_FLOAT或DataBuffer.TYPE_DOUBLE之一。数据可能以打包格式返回,从而提高数据传输效率。通常,应将obj传递为null,以便自动创建Object,并且将是正确的原始数据类型。

      以下代码示例说明了从由SampleModel sm1描述存储布局的DataBuffer db1中的一个像素传输数据到由SampleModel sm2描述存储布局的DataBuffer db2中。与使用getPixels/setPixels相比,传输通常更有效。

             SampleModel sm1, sm2;
             DataBuffer db1, db2;
             sm2.setDataElements(x, y, w, h, sm1.getDataElements(x, y, w,
                                 h, null, db1), db2);
       
      如果SampleModels具有相同数量的波段,相应波段具有相同数量的每个样本的位数,并且TransferTypes相同,则在两个DataBuffer/SampleModel对之间使用getDataElements/setDataElements是合法的。

      如果obj非空,则应该是TransferType类型的原始数组。否则,将抛出ClassCastException。如果坐标超出范围,或者obj非空且不足以容纳像素数据,则可能会抛出ArrayIndexOutOfBoundsException。

      参数:
      x - 像素矩形的最小X坐标。
      y - 像素矩形的最小Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      obj - 如果非空,则用于返回像素数据的原始数组。
      data - 包含图像数据的DataBuffer。
      返回值:
      指定像素区域的数据元素。
      抛出:
      NullPointerException - 如果data为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者obj太小无法容纳输出。
      参见:
    • setDataElements

      public abstract void setDataElements(int x, int y, Object obj, DataBuffer data)
      从TransferType类型的原始数组中设置指定DataBuffer中单个像素的数据。对于Java 2D API支持的图像数据,这将是DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT、DataBuffer.TYPE_SHORT、DataBuffer.TYPE_FLOAT或DataBuffer.TYPE_DOUBLE之一。数组中的数据可能以打包格式存在,从而提高数据传输效率。

      以下代码示例说明了从由SampleModel sm1描述存储布局的DataBuffer db1中的一个像素传输数据到由SampleModel sm2描述存储布局的DataBuffer db2中。与使用getPixel/setPixel相比,传输通常更有效。

             SampleModel sm1, sm2;
             DataBuffer db1, db2;
             sm2.setDataElements(x, y, sm1.getDataElements(x, y, null, db1),
                                 db2);
       
      如果SampleModels具有相同数量的波段,相应波段具有相同数量的每个样本的位数,并且TransferTypes相同,则在两个DataBuffer/SampleModel对之间使用getDataElements/setDataElements是合法的。

      obj必须是TransferType类型的原始数组。否则,将抛出ClassCastException。如果坐标超出范围,或者obj不足以容纳像素数据,则可能会抛出ArrayIndexOutOfBoundsException。

      参数:
      x - 像素位置的X坐标。
      y - 像素位置的Y坐标。
      obj - 包含像素数据的原始数组。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果数据为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者obj太小无法容纳输入。
      参见:
    • setDataElements

      public void setDataElements(int x, int y, int w, int h, Object obj, DataBuffer data)
      从类型为TransferType的原始数组中设置指定DataBuffer中像素矩形的数据。对于Java 2D API支持的图像数据,这将是DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT、DataBuffer.TYPE_SHORT、DataBuffer.TYPE_FLOAT或DataBuffer.TYPE_DOUBLE之一。数组中的数据可能是打包格式,从而提高数据传输效率。

      以下代码示例说明了从DataBuffer db1(其存储布局由SampleModel sm1描述)传输像素的矩形区域数据到DataBuffer db2(其存储布局由SampleModel sm2描述)。与使用getPixels/setPixels相比,传输通常更有效。

             SampleModel sm1, sm2;
             DataBuffer db1, db2;
             sm2.setDataElements(x, y, w, h, sm1.getDataElements(x, y, w, h,
                                 null, db1), db2);
       
      如果SampleModels具有相同数量的波段,相应波段具有相同数量的每个样本位数,并且TransferTypes相同,则使用getDataElements/setDataElements在两个DataBuffer/SampleModel对之间进行传输是合法的。

      obj必须是TransferType类型的原始数组。否则,将抛出ClassCastException。如果坐标超出范围,或者obj不足以容纳像素数据,则可能会抛出ArrayIndexOutOfBoundsException。

      参数:
      x - 像素矩形的最小X坐标。
      y - 像素矩形的最小Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      obj - 包含像素数据的原始数组。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果数据为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者obj太小无法容纳输入。
      参见:
    • getPixel

      public float[] getPixel(int x, int y, float[] fArray, DataBuffer data)
      返回一个float数组中指定像素的样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 像素位置的X坐标。
      y - 像素位置的Y坐标。
      fArray - 如果非null,则将样本返回到此数组中。
      data - 包含图像数据的DataBuffer。
      返回:
      指定像素的样本。
      抛出:
      NullPointerException - 如果数据为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者fArray太小无法容纳输出。
      参见:
    • getPixel

      public double[] getPixel(int x, int y, double[] dArray, DataBuffer data)
      返回一个double数组中指定像素的样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 像素位置的X坐标。
      y - 像素位置的Y坐标。
      dArray - 如果非null,则将样本返回到此数组中。
      data - 包含图像数据的DataBuffer。
      返回:
      指定像素的样本。
      抛出:
      NullPointerException - 如果数据为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者dArray太小无法容纳输出。
      参见:
    • getPixels

      public int[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
      返回一个int数组中指定像素的所有样本,每个数组元素一个样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      iArray - 如果非null,则将样本返回到此数组中。
      data - 包含图像数据的DataBuffer。
      返回:
      指定像素区域的样本。
      抛出:
      NullPointerException - 如果数据为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者iArray太小无法容纳输出。
      参见:
    • getPixels

      public float[] getPixels(int x, int y, int w, int h, float[] fArray, DataBuffer data)
      返回一个float数组中指定像素的所有样本,每个数组元素一个样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      fArray - 如果非null,则将样本返回到此数组中。
      data - 包含图像数据的DataBuffer。
      返回:
      指定像素区域的样本。
      抛出:
      NullPointerException - 如果数据为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者fArray太小无法容纳输出。
      参见:
    • getPixels

      public double[] getPixels(int x, int y, int w, int h, double[] dArray, DataBuffer data)
      返回一个double数组中指定像素的所有样本,每个数组元素一个样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      dArray - 如果非null,则将样本返回到此数组中。
      data - 包含图像数据的DataBuffer。
      返回:
      指定像素区域的样本。
      抛出:
      NullPointerException - 如果数据为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者dArray太小无法容纳输出。
      参见:
    • getSample

      public abstract int getSample(int x, int y, int b, DataBuffer data)
      返回位于(x,y)处的像素的指定波段的样本作为int。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 像素位置的X坐标。
      y - 像素位置的Y坐标。
      b - 要返回的波段。
      data - 包含图像数据的DataBuffer。
      返回:
      指定像素的指定波段中的样本。
      抛出:
      NullPointerException - 如果data为null。
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引超出范围。
      参见:
    • getSampleFloat

      public float getSampleFloat(int x, int y, int b, DataBuffer data)
      返回位于(x,y)处的像素的指定波段中的样本作为浮点数。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 像素位置的X坐标。
      y - 像素位置的Y坐标。
      b - 要返回的波段。
      data - 包含图像数据的DataBuffer。
      返回:
      指定像素的指定波段中的样本。
      抛出:
      NullPointerException - 如果data为null。
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引超出范围。
    • getSampleDouble

      public double getSampleDouble(int x, int y, int b, DataBuffer data)
      返回位于(x,y)处的像素的指定波段中的样本作为双精度浮点数。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      b - 要返回的波段。
      iArray - 如果非null,则返回此数组中的样本。
      data - 包含图像数据的DataBuffer。
      返回:
      指定区域像素的指定波段中的样本。
      抛出:
      NullPointerException - 如果data为null。
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引超出范围,或者如果iArray太小无法容纳输出。
      参见:
    • getSamples

      public int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
      返回一个int数组中指定矩形像素的指定波段的样本,每个数组元素一个样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      b - 要返回的波段。
      fArray - 如果非null,则返回此数组中的样本。
      data - 包含图像数据的DataBuffer。
      返回:
      指定区域像素的指定波段中的样本。
      抛出:
      NullPointerException - 如果data为null。
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引超出范围,或者如果fArray太小无法容纳输出。
      参见:
    • getSamples

      public float[] getSamples(int x, int y, int w, int h, int b, float[] fArray, DataBuffer data)
      返回一个float数组中指定矩形像素的指定波段的样本,每个数组元素一个样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      b - 要返回的波段。
      fArray - 如果非null,则返回此数组中的样本。
      data - 包含图像数据的DataBuffer。
      返回:
      指定区域像素的指定波段中的样本。
      抛出:
      NullPointerException - 如果data为null。
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引超出范围,或者如果fArray太小无法容纳输出。
      参见:
    • getSamples

      public double[] getSamples(int x, int y, int w, int h, int b, double[] dArray, DataBuffer data)
      返回一个double数组中指定矩形像素的指定波段的样本,每个数组元素一个样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      b - 要返回的波段。
      dArray - 如果非null,则返回此数组中的样本。
      data - 包含图像数据的DataBuffer。
      返回:
      指定区域像素的指定波段中的样本。
      抛出:
      NullPointerException - 如果data为null。
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引超出范围,或者如果dArray太小无法容纳输出。
      参见:
    • setPixel

      public void setPixel(int x, int y, int[] iArray, DataBuffer data)
      使用int数组中的样本设置DataBuffer中的像素。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 像素位置的X坐标。
      y - 像素位置的Y坐标。
      iArray - int数组中的输入样本。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果iArray或data为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者如果iArray太小无法容纳输入。
      参见:
    • setPixel

      public void setPixel(int x, int y, float[] fArray, DataBuffer data)
      使用float数组中的样本设置DataBuffer中的像素。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 像素位置的X坐标。
      y - 像素位置的Y坐标。
      fArray - float数组中的输入样本。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果fArray或data为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者如果fArray太小无法容纳输入。
      参见:
    • setPixel

      public void setPixel(int x, int y, double[] dArray, DataBuffer data)
      使用double数组中的样本设置DataBuffer中的像素。
      参数:
      x - 像素位置的X坐标。
      y - 像素位置的Y坐标。
      dArray - double数组中的输入样本。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果dArray或data为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者如果fArray太小无法容纳输入。
      参见:
    • setPixels

      public void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
      使用包含每个数组元素一个样本的int数组设置像素的DataBuffer中的矩形像素。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      iArray - 一个int数组中的输入样本。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果iArray或data为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者iArray太小无法容纳输入。
      参见:
    • setPixels

      public void setPixels(int x, int y, int w, int h, float[] fArray, DataBuffer data)
      从包含每个数组元素一个样本的float数组中设置像素矩形的所有样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      fArray - 一个float数组中的输入样本。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果fArray或data为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者fArray太小无法容纳输入。
      参见:
    • setPixels

      public void setPixels(int x, int y, int w, int h, double[] dArray, DataBuffer data)
      从包含每个数组元素一个样本的double数组中设置像素矩形的所有样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      dArray - 一个double数组中的输入样本。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果dArray或data为null。
      ArrayIndexOutOfBoundsException - 如果坐标超出范围,或者dArray太小无法容纳输入。
      参见:
    • setSample

      public abstract void setSample(int x, int y, int b, int s, DataBuffer data)
      使用int类型的输入为DataBuffer中位于(x,y)位置的像素的指定波段设置样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 像素位置的X坐标。
      y - 像素位置的Y坐标。
      b - 要设置的波段。
      s - 作为int的输入样本。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果data为null。
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引超出范围。
      参见:
    • setSample

      public void setSample(int x, int y, int b, float s, DataBuffer data)
      使用float类型的输入为DataBuffer中位于(x,y)位置的像素的指定波段设置样本。此方法的默认实现将输入的float样本转换为int,然后使用该int值调用setSample(int, int, int, DataBuffer)方法。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 像素位置的X坐标。
      y - 像素位置的Y坐标。
      b - 要设置的波段。
      s - 作为float的输入样本。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果data为null。
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引超出范围。
      参见:
    • setSample

      public void setSample(int x, int y, int b, double s, DataBuffer data)
      使用double类型的输入为DataBuffer中位于(x,y)位置的像素的指定波段设置样本。此方法的默认实现将输入的double样本转换为int,然后使用该int值调用setSample(int, int, int, DataBuffer)方法。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 像素位置的X坐标。
      y - 像素位置的Y坐标。
      b - 要设置的波段。
      s - 作为double的输入样本。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果data为null。
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引超出范围。
      参见:
    • setSamples

      public void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
      从包含每个数组元素一个样本的int数组中设置指定矩形的像素的指定波段的样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      b - 要设置的波段。
      iArray - 一个int数组中的输入样本。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果iArray或data为null。
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引超出范围,或者iArray太小无法容纳输入。
      参见:
    • setSamples

      public void setSamples(int x, int y, int w, int h, int b, float[] fArray, DataBuffer data)
      从包含每个数组元素一个样本的float数组中设置指定矩形的像素的指定波段的样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      b - 要设置的波段。
      fArray - 一个float数组中的输入样本。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果fArray或data为null。
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引超出范围,或者fArray太小无法容纳输入。
      参见:
    • setSamples

      public void setSamples(int x, int y, int w, int h, int b, double[] dArray, DataBuffer data)
      从包含每个数组元素一个样本的double数组中设置指定矩形的像素的指定波段的样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。
      参数:
      x - 左上角像素位置的X坐标。
      y - 左上角像素位置的Y坐标。
      w - 像素矩形的宽度。
      h - 像素矩形的高度。
      b - 要设置的波段。
      dArray - 双精度数组中的输入样本。
      data - 包含图像数据的DataBuffer。
      抛出:
      NullPointerException - 如果dArray或data为null。
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引超出范围,或者dArray太小无法容纳输入。
      参见:
    • createCompatibleSampleModel

      public abstract SampleModel createCompatibleSampleModel(int w, int h)
      创建一个SampleModel,描述此SampleModel格式中的数据,但具有不同的宽度和高度。
      参数:
      w - 图像数据的宽度
      h - 图像数据的高度
      返回:
      描述与此SampleModel相同图像数据的SampleModel,但尺寸不同。
    • createSubsetSampleModel

      public abstract SampleModel createSubsetSampleModel(int[] bands)
      创建一个具有此SampleModel波段子集的新SampleModel。
      参数:
      bands - 此SampleModel的波段子集
      返回:
      具有此SampleModel波段子集的SampleModel
    • createDataBuffer

      public abstract DataBuffer createDataBuffer()
      创建一个与此SampleModel相对应的DataBuffer。DataBuffer的宽度和高度将与此SampleModel相匹配。
      返回:
      与此SampleModel相对应的DataBuffer
    • getSampleSize

      public abstract int[] getSampleSize()
      返回所有波段样本的位大小。
      返回:
      所有波段样本的大小。
    • getSampleSize

      public abstract int getSampleSize(int band)
      返回指定波段样本的位大小。
      参数:
      band - 指定的波段
      返回:
      指定波段样本的大小。