模块 java.desktop

类 Raster

java.lang.Object
java.awt.image.Raster
已知子类:
WritableRaster

public class Raster extends Object
表示矩形像素阵列的类。 Raster 封装了一个存储样本值的 DataBuffer 和一个描述如何在 DataBuffer 中定位给定样本值的 SampleModel。

光栅定义了占据平面特定矩形区域的像素值,不一定包括 (0, 0)。该矩形称为 Raster 的边界矩形,可通过 getBounds 方法获得,由 minX、minY、宽度和高度值定义。 minX 和 minY 值定义 Raster 左上角的坐标。引用边界矩形外的像素可能会导致抛出异常,或者可能会导致引用 Raster 的关联 DataBuffer 的意外元素。用户有责任避免访问此类像素。

SampleModel 描述了 Raster 的样本如何存储在 DataBuffer 的原始数组元素中。每个数据元素可以存储一个样本,如在 PixelInterleavedSampleModel 或 BandedSampleModel 中,或将多个样本打包到一个元素中,如在 SinglePixelPackedSampleModel 或 MultiPixelPackedSampleModel 中。 SampleModel 还控制样本是否进行符号扩展,允许将未签名的数据存储在已签名的 Java 数据类型中,例如 byte、short 和 int。

尽管 Raster 可能存在于平面中的任何位置,但 SampleModel 使用从 (0, 0) 开始的简单坐标系。因此,Raster 包含一个平移因子,允许在 Raster 的坐标系和 SampleModel 的坐标系之间映射像素位置。从 SampleModel 坐标系到 Raster 坐标系的转换可以通过 getSampleModelTranslateX 和 getSampleModelTranslateY 方法获得。

Raster 可以通过显式构造或使用 createChild 和 createTranslatedChild 方法与另一个 Raster 共享 DataBuffer。通过这些方法创建的栅格可以返回对通过 getParent 方法从中创建它们的栅格的引用。对于不是通过调用 createTranslatedChild 或 createChild 构造的 Raster,getParent 将返回 null。

createTranslatedChild 方法返回一个新的 Raster,它共享当前 Raster 的所有数据,但占据一个宽度和高度相同但起点不同的边界矩形。例如,如果父 Raster 占据了 (10, 10) 到 (100, 100) 的区域,并且翻译后的 Raster 定义为从 (50, 50) 开始,则父 Raster 的像素 (20, 20) 和像素 ( 60, 60) 的子级在两个 Rasters 共享的 DataBuffer 中占据相同的位置。第一种情况需要在一个像素坐标上加上(-10, -10)得到对应的SampleModel坐标,第二种情况需要加上(-50, -50)。

父栅格和子栅格之间的转换可以通过从父栅格的值中减去子栅格的 sampleModelTranslateX 和 sampleModelTranslateY 值来确定。

createChild 方法可用于创建一个新的 Raster,该 Raster 仅占据其父级边界矩形的子集(具有相同或转换后的坐标系)或其父级波段的子集。

所有构造方法都受到保护。创建 Raster 的正确方法是使用此类中定义的静态创建方法之一。这些方法创建使用标准 Interleaved、Banded 和 Packed SampleModel 的 Raster 实例,并且与通过组合外部生成的 SampleModel 和 DataBuffer 创建的 Raster 相比,这些实例的处理效率更高。

参见:
  • 字段摘要

    字段
    修饰符和类型
    Field
    描述
    protected DataBuffer
    存储图像数据的 DataBuffer。
    protected int
    此栅格的高度。
    protected int
    此 Raster 左上角像素的 X 坐标。
    protected int
    此 Raster 左上角像素的 Y 坐标。
    protected int
    栅格中的波段数。
    protected int
    每个像素的 DataBuffer 数据元素数。
    protected Raster
    此 Raster 的父级,或为 null。
    protected SampleModel
    描述此 Raster 中的像素如何存储在 DataBuffer 中的 SampleModel。
    protected int
    从 Raster 的 SampleModel 坐标空间到 Raster 坐标空间的 X 平移。
    protected int
    从 Raster 的 SampleModel 坐标空间到 Raster 坐标空间的 Y 平移。
    protected int
    此光栅的宽度。
  • 构造方法总结

    构造方法
    修饰符
    构造方法
    描述
    protected
    Raster(SampleModel sampleModel, DataBuffer dataBuffer, Point origin)
    使用给定的 SampleModel 和 DataBuffer 构造一个 Raster。
    protected
    Raster(SampleModel sampleModel, DataBuffer dataBuffer, Rectangle aRegion, Point sampleModelTranslate, Raster parent)
    使用给定的 SampleModel、DataBuffer 和父级构造一个 Raster。
    protected
    Raster(SampleModel sampleModel, Point origin)
    使用给定的 SampleModel 构造一个 Raster。
  • 方法总结

    修饰符和类型
    方法
    描述
    createBandedRaster(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point location)
    基于具有指定数据类型、宽度、高度、扫描线步幅、银行指数和波段偏移的 BandedSampleModel 创建 Raster。
    createBandedRaster(int dataType, int w, int h, int bands, Point location)
    基于具有指定数据类型、宽度、高度和波段数的 BandedSampleModel 创建 Raster。
    createBandedRaster(DataBuffer dataBuffer, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point location)
    基于具有指定 DataBuffer、宽度、高度、扫描线步幅、银行指数和波段偏移的 BandedSampleModel 创建一个 Raster。
    createChild(int parentX, int parentY, int width, int height, int childMinX, int childMinY, int[] bandList)
    返回一个新的 Raster,它共享此 Raster 的 DataBuffer 的全部或部分。
    使用相同的 SampleModel 和新初始化的 DataBuffer 创建与此 Raster 大小相同的兼容 WritableRaster。
    创建具有指定大小、新 SampleModel 和新初始化 DataBuffer 的兼容 WritableRaster。
    createCompatibleWritableRaster(int x, int y, int w, int h)
    创建具有指定位置(minX、minY)和大小(宽度、高度)、新 SampleModel 和新初始化 DataBuffer 的兼容 WritableRaster。
    创建一个兼容的 WritableRaster,其位置(minX、minY)和大小(宽度、高度)由 rect、一个新的 SampleModel 和一个新的初始化 DataBuffer 指定。
    createInterleavedRaster(int dataType, int w, int h, int scanlineStride, int pixelStride, int[] bandOffsets, Point location)
    基于具有指定数据类型、宽度、高度、扫描线步幅、像素步幅和波段偏移的 PixelInterleavedSampleModel 创建 Raster。
    createInterleavedRaster(int dataType, int w, int h, int bands, Point location)
    基于具有指定数据类型、宽度、高度和波段数的 PixelInterleavedSampleModel 创建 Raster。
    createInterleavedRaster(DataBuffer dataBuffer, int w, int h, int scanlineStride, int pixelStride, int[] bandOffsets, Point location)
    基于具有指定 DataBuffer、宽度、高度、扫描线步幅、像素步幅和波段偏移的 PixelInterleavedSampleModel 创建 Raster。
    createPackedRaster(int dataType, int w, int h, int[] bandMasks, Point location)
    基于具有指定数据类型、宽度、高度和波段掩码的 SinglePixelPackedSampleModel 创建 Raster。
    createPackedRaster(int dataType, int w, int h, int bands, int bitsPerBand, Point location)
    基于具有指定数据类型、宽度、高度、波段数和每波段位数的打包 SampleModel 创建 Raster。
    createPackedRaster(DataBuffer dataBuffer, int w, int h, int scanlineStride, int[] bandMasks, Point location)
    基于具有指定 DataBuffer、宽度、高度、扫描线步幅和波段掩码的 SinglePixelPackedSampleModel 创建 Raster。
    createPackedRaster(DataBuffer dataBuffer, int w, int h, int bitsPerPixel, Point location)
    基于具有指定 DataBuffer、宽度、高度和每像素位数的 MultiPixelPackedSampleModel 创建 Raster。
    static Raster
    使用指定的 SampleModel 和 DataBuffer 创建一个 Raster。
    createTranslatedChild(int childMinX, int childMinY)
    创建一个与此具有相同大小、SampleModel 和 DataBuffer 的 Raster,但位置不同。
    使用指定的 SampleModel 和 DataBuffer 创建 WritableRaster。
    创建具有指定 SampleModel 的 WritableRaster。
    返回此 Raster 的边界 Rectangle。
    返回与此 Raster 关联的 DataBuffer。
    getDataElements(int x, int y, int w, int h, Object outData)
    返回类型为 TransferType 的原始数组中指定像素矩形的像素数据。
    getDataElements(int x, int y, Object outData)
    返回类型为 TransferType 的原始数组中单个像素的数据。
    final int
    返回栅格的高度(以像素为单位)。
    final int
    返回 Raster 的最小有效 X 坐标。
    final int
    返回 Raster 的最小有效 Y 坐标。
    final int
    返回此 Raster 中的波段数(每像素样本数)。
    final int
    通过 getDataElements 和 setDataElements 方法返回传输一个像素所需的数据元素数。
    返回此 Raster 的父 Raster(如果有)或 null。
    double[]
    getPixel(int x, int y, double[] dArray)
    返回指定像素的双精度数组中的样本。
    float[]
    getPixel(int x, int y, float[] fArray)
    返回指定像素的浮点数组中的样本。
    int[]
    getPixel(int x, int y, int[] iArray)
    返回指定像素的 int 数组中的样本。
    double[]
    getPixels(int x, int y, int w, int h, double[] dArray)
    返回一个包含像素矩形的所有样本的双精度数组,每个数组元素一个样本。
    float[]
    getPixels(int x, int y, int w, int h, float[] fArray)
    返回一个包含像素矩形的所有样本的浮点数组,每个数组元素一个样本。
    int[]
    getPixels(int x, int y, int w, int h, int[] iArray)
    返回一个 int 数组,其中包含像素矩形的所有样本,每个数组元素一个样本。
    int
    getSample(int x, int y, int b)
    以 int 形式返回位于 (x,y) 处像素的指定波段中的样本。
    double
    getSampleDouble(int x, int y, int b)
    将位于 (x,y) 处的像素的指定波段中的样本作为双精度值返回。
    float
    getSampleFloat(int x, int y, int b)
    将位于 (x,y) 处的像素的指定波段中的样本作为浮点数返回。
    返回描述图像数据布局的 SampleModel。
    final int
    返回从 SampleModel 坐标系到 Raster 坐标系的 X 平移。
    final int
    返回从 SampleModel 坐标系到 Raster 坐标系的 Y 平移。
    double[]
    getSamples(int x, int y, int w, int h, int b, double[] dArray)
    返回双精度数组中指定像素矩形的指定波段的样本,每个数组元素一个样本。
    float[]
    getSamples(int x, int y, int w, int h, int b, float[] fArray)
    返回浮点数组中指定像素矩形的指定波段的样本,每个数组元素一个样本。
    int[]
    getSamples(int x, int y, int w, int h, int b, int[] iArray)
    返回 int 数组中指定像素矩形的指定波段的样本,每个数组元素一个样本。
    final int
    返回用于通过 getDataElements 和 setDataElements 方法传输像素的 TransferType。
    final int
    返回 Raster 的宽度(以像素为单位)。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细信息

    • sampleModel

      protected SampleModel  sampleModel
      描述此 Raster 中的像素如何存储在 DataBuffer 中的 SampleModel。
    • dataBuffer

      protected DataBuffer  dataBuffer
      存储图像数据的 DataBuffer。
    • minX

      protected int minX
      此 Raster 左上角像素的 X 坐标。
    • minY

      protected int minY
      此 Raster 左上角像素的 Y 坐标。
    • width

      protected int width
      此光栅的宽度。
    • height

      protected int height
      此栅格的高度。
    • sampleModelTranslateX

      protected int sampleModelTranslateX
      从 Raster 的 SampleModel 坐标空间到 Raster 坐标空间的 X 平移。
    • sampleModelTranslateY

      protected int sampleModelTranslateY
      从 Raster 的 SampleModel 坐标空间到 Raster 坐标空间的 Y 平移。
    • numBands

      protected int numBands
      栅格中的波段数。
    • numDataElements

      protected int numDataElements
      每个像素的 DataBuffer 数据元素数。
    • parent

      protected Raster  parent
      此 Raster 的父级,或为 null。
  • 构造方法详细信息

    • Raster

      protected Raster(SampleModel  sampleModel, Point  origin)
      使用给定的 SampleModel 构造一个 Raster。 Raster 的左上角为原点,与 SampleModel 大小相同。自动创建一个足以描述 Raster 的 DataBuffer。
      参数:
      sampleModel - 指定布局的 SampleModel
      origin - 指定原点的点
      抛出:
      RasterFormatException - 如果计算 origin.x + sampleModel.getWidth()origin.y + sampleModel.getHeight() 导致整数溢出
      NullPointerException - sampleModelorigin 为空
    • Raster

      protected Raster(SampleModel  sampleModel, DataBuffer  dataBuffer, Point  origin)
      使用给定的 SampleModel 和 DataBuffer 构造一个 Raster。 Raster 的左上角为原点,与 SampleModel 大小相同。 DataBuffer 未初始化,必须与 SampleModel 兼容。
      参数:
      sampleModel - 指定布局的 SampleModel
      dataBuffer - 包含图像数据的 DataBuffer
      origin - 指定原点的点
      抛出:
      RasterFormatException - 如果计算 origin.x + sampleModel.getWidth()origin.y + sampleModel.getHeight() 导致整数溢出
      NullPointerException - sampleModelorigin 为空
    • Raster

      protected Raster(SampleModel  sampleModel, DataBuffer  dataBuffer, Rectangle  aRegion, Point  sampleModelTranslate, Raster  parent)
      使用给定的 SampleModel、DataBuffer 和父级构造一个 Raster。 aRegion 指定新 Raster 的边界矩形。当转换为基础 Raster 的坐标系时,aRegion 必须包含在基础 Raster 中。 (基本 Raster 是没有父级的 Raster 的祖先。)sampleModelTranslate 指定新 Raster 的 sampleModelTranslateX 和 sampleModelTranslateY 值。注意这个构造方法一般应该被其他构造方法或者create方法调用,不应该直接使用。
      参数:
      sampleModel - 指定布局的 SampleModel
      dataBuffer - 包含图像数据的 DataBuffer
      aRegion - 指定图像区域的 Rectangle
      sampleModelTranslate - 指定从 SampleModel 到 Raster 坐标的转换的点
      parent - 此光栅的父级(如果有)
      抛出:
      NullPointerException - 如果 sampleModeldataBufferaRegionsampleModelTranslate 中的任何一个为空
      RasterFormatException - 如果 aRegion 的宽度或高度小于或等于零,或者计算 aRegion.x + aRegion.widthaRegion.y + aRegion.height 导致整数溢出
  • 方法详情

    • createInterleavedRaster

      public static WritableRaster  createInterleavedRaster(int dataType, int w, int h, int bands, Point  location)
      基于具有指定数据类型、宽度、高度和波段数的 PixelInterleavedSampleModel 创建 Raster。

      Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。 dataType 参数应该是 DataBuffer 类中定义的枚举值之一。

      请注意,不支持交错的 DataBuffer.TYPE_INT 栅格。要创建 DataBuffer.TYPE_INT 类型的单波段栅格,请使用 Raster.createPackedRaster()。

      当前唯一支持的数据类型是 TYPE_BYTE 和 TYPE_USHORT。

      参数:
      dataType - 存储样本的数据类型
      w - 图像数据的像素宽度
      h - 图像数据的像素高度
      bands - 波段数
      location - Raster 的左上角
      返回:
      具有指定数据类型、宽度、高度和波段数的 WritableRaster 对象。
      抛出:
      IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一
      IllegalArgumentException - 如果 bands 小于 1
      IllegalArgumentException - 如果 wh 不都 > 0
      IllegalArgumentException - 如果 wh 的乘积大于 Integer.MAX_VALUE
      RasterFormatException - 如果计算 location.x + wlocation.y + h 导致整数溢出
    • createInterleavedRaster

      public static WritableRaster  createInterleavedRaster(int dataType, int w, int h, int scanlineStride, int pixelStride, int[] bandOffsets, Point  location)
      基于具有指定数据类型、宽度、高度、扫描线步幅、像素步幅和波段偏移的 PixelInterleavedSampleModel 创建 Raster。波段数是从bandOffsets.length 推断出来的。

      Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。 dataType 参数应该是 DataBuffer 类中定义的枚举值之一。

      请注意,不支持交错的 DataBuffer.TYPE_INT 栅格。要创建 DataBuffer.TYPE_INT 类型的单波段栅格,请使用 Raster.createPackedRaster()。

      当前唯一支持的数据类型是 TYPE_BYTE 和 TYPE_USHORT。

      参数:
      dataType - 存储样本的数据类型
      w - 图像数据的像素宽度
      h - 图像数据的像素高度
      scanlineStride - 图像数据的行步幅
      pixelStride - 图像数据的像素跨度
      bandOffsets - 所有波段的偏移量
      location - Raster 的左上角
      返回:
      具有指定数据类型、宽度、高度、扫描线步幅、像素步幅和波段偏移量的 WritableRaster 对象。
      抛出:
      IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一,即 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT
      IllegalArgumentException - 如果 wh 不都 > 0
      IllegalArgumentException - 如果 wh 的乘积大于 Integer.MAX_VALUE
      RasterFormatException - 如果计算 location.x + wlocation.y + h 导致整数溢出
      IllegalArgumentException - 如果 scanlineStride 小于 0
      IllegalArgumentException - 如果 pixelStride 小于 0
      NullPointerException - 如果 bandOffsets 为空
    • createBandedRaster

      public static WritableRaster  createBandedRaster(int dataType, int w, int h, int bands, Point  location)
      基于具有指定数据类型、宽度、高度和波段数的 BandedSampleModel 创建 Raster。

      Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。 dataType 参数应该是 DataBuffer 类中定义的枚举值之一。

      当前唯一支持的数据类型是 TYPE_BYTE、TYPE_USHORT 和 TYPE_INT。

      参数:
      dataType - 存储样本的数据类型
      w - 图像数据的像素宽度
      h - 图像数据的像素高度
      bands - 波段数
      location - Raster 的左上角
      返回:
      具有指定数据类型、宽度、高度和波段数的 WritableRaster 对象。
      抛出:
      IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一,即 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
      IllegalArgumentException - 如果 wh 不都大于 0
      IllegalArgumentException - 如果 wh 的乘积大于 Integer.MAX_VALUE
      IllegalArgumentException - 如果计算 location.x + wlocation.y + h 导致整数溢出
      ArrayIndexOutOfBoundsException - 如果 bands 小于 1
    • createBandedRaster

      public static WritableRaster  createBandedRaster(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point  location)
      基于具有指定数据类型、宽度、高度、扫描线步幅、银行指数和波段偏移的 BandedSampleModel 创建 Raster。 band 的数量是从 bankIndices.length 和 bandOffsets.length 推断出来的,它们必须相同。

      Raster 的左上角由位置参数给出。 dataType 参数应该是 DataBuffer 类中定义的枚举值之一。

      当前唯一支持的数据类型是 TYPE_BYTE、TYPE_USHORT 和 TYPE_INT。

      参数:
      dataType - 存储样本的数据类型
      w - 图像数据的像素宽度
      h - 图像数据的像素高度
      scanlineStride - 图像数据的行步幅
      bankIndices - 每个波段的银行指数
      bandOffsets - 所有波段的偏移量
      location - Raster 的左上角
      返回:
      具有指定数据类型、宽度、高度、扫描线步幅、银行索引和波段偏移量的 WritableRaster 对象。
      抛出:
      IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一,即 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
      IllegalArgumentException - 如果 wh 不都大于 0
      IllegalArgumentException - 如果 wh 的乘积大于 Integer.MAX_VALUE
      IllegalArgumentException - 如果计算 location.x + wlocation.y + h 导致整数溢出
      IllegalArgumentException - 如果 scanlineStride 小于 0
      ArrayIndexOutOfBoundsException - 如果 bankIndicesnull
      NullPointerException - 如果 bandOffsetsnull
    • createPackedRaster

      public static WritableRaster  createPackedRaster(int dataType, int w, int h, int[] bandMasks, Point  location)
      基于具有指定数据类型、宽度、高度和波段掩码的 SinglePixelPackedSampleModel 创建 Raster。带的数量是从 bandMasks.length 推断出来的。

      Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。 dataType 参数应该是 DataBuffer 类中定义的枚举值之一。

      当前唯一支持的数据类型是 TYPE_BYTE、TYPE_USHORT 和 TYPE_INT。

      参数:
      dataType - 存储样本的数据类型
      w - 图像数据的像素宽度
      h - 图像数据的像素高度
      bandMasks - 包含每个波段条目的数组
      location - Raster 的左上角
      返回:
      具有指定数据类型、宽度、高度和波段掩码的 WritableRaster 对象。
      抛出:
      RasterFormatException - 如果 wh 小于或等于零,或者计算 location.x + wlocation.y + h 导致整数溢出
      IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一,即 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
    • createPackedRaster

      public static WritableRaster  createPackedRaster(int dataType, int w, int h, int bands, int bitsPerBand, Point  location)
      基于具有指定数据类型、宽度、高度、波段数和每波段位数的打包 SampleModel 创建 Raster。如果波段数是一个,则 SampleModel 将是一个 MultiPixelPackedSampleModel。

      如果 band 的数量超过一个,SampleModel 将是一个 SinglePixelPackedSampleModel,每个 band 都有 bitsPerBand 位。无论哪种情况,都必须满足相应 SampleModel 强加的对 dataType 和 bitsPerBand 的要求。

      Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。 dataType 参数应该是 DataBuffer 类中定义的枚举值之一。

      当前唯一支持的数据类型是 TYPE_BYTE、TYPE_USHORT 和 TYPE_INT。

      参数:
      dataType - 存储样本的数据类型
      w - 图像数据的像素宽度
      h - 图像数据的像素高度
      bands - 波段数
      bitsPerBand - 每个频段的位数
      location - Raster 的左上角
      返回:
      具有指定数据类型、宽度、高度、波段数和每个波段位数的 WritableRaster 对象。
      抛出:
      RasterFormatException - 如果 wh 小于或等于零,或者计算 location.x + wlocation.y + h 导致整数溢出
      IllegalArgumentException - 如果 bitsPerBandbands 的乘积大于 dataType 持有的位数
      IllegalArgumentException - 如果 bitsPerBandbands 不大于零
      IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一,即 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
    • createInterleavedRaster

      public static WritableRaster  createInterleavedRaster(DataBuffer  dataBuffer, int w, int h, int scanlineStride, int pixelStride, int[] bandOffsets, Point  location)
      基于具有指定 DataBuffer、宽度、高度、扫描线步幅、像素步幅和波段偏移的 PixelInterleavedSampleModel 创建 Raster。波段数是从bandOffsets.length 推断出来的。 Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。

      请注意,不支持交错的 DataBuffer.TYPE_INT 栅格。要创建 DataBuffer.TYPE_INT 类型的单波段栅格,请使用 Raster.createPackedRaster()。

      参数:
      dataBuffer - 包含图像数据的 DataBuffer
      w - 图像数据的像素宽度
      h - 图像数据的像素高度
      scanlineStride - 图像数据的行步幅
      pixelStride - 图像数据的像素跨度
      bandOffsets - 所有波段的偏移量
      location - Raster 的左上角
      返回:
      具有指定 DataBuffer 、宽度、高度、扫描线步幅、像素步幅和波段偏移量的 WritableRaster 对象。
      抛出:
      IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一,即 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT
      NullPointerException - 如果 dataBuffer 为空
      IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一,即 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT
      RasterFormatException - 如果 dataBuffer 有多个银行。
      IllegalArgumentException - 如果 wh 不都 > 0
      IllegalArgumentException - 如果 wh 的乘积大于 Integer.MAX_VALUE
      RasterFormatException - 如果计算 location.x + wlocation.y + h 导致整数溢出
      IllegalArgumentException - 如果 scanlineStride 小于 0
      IllegalArgumentException - 如果 pixelStride 小于 0
      NullPointerException - 如果 bandOffsets 为空
    • createBandedRaster

      public static WritableRaster  createBandedRaster(DataBuffer  dataBuffer, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point  location)
      基于具有指定 DataBuffer、宽度、高度、扫描线步幅、银行指数和波段偏移的 BandedSampleModel 创建一个 Raster。 band 的数量是从 bankIndices.length 和 bandOffsets.length 推断出来的,它们必须相同。 Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。
      参数:
      dataBuffer - 包含图像数据的 DataBuffer
      w - 图像数据的像素宽度
      h - 图像数据的像素高度
      scanlineStride - 图像数据的行步幅
      bankIndices - 每个波段的银行指数
      bandOffsets - 所有波段的偏移量
      location - Raster 的左上角
      返回:
      具有指定 DataBuffer 、宽度、高度、扫描线步幅、银行指数和波段偏移量的 WritableRaster 对象。
      抛出:
      NullPointerException - 如果 dataBuffer 为空,或 bankIndices 为空,或 bandOffsets 为空
      IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一,即 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT,或者如果 wh 小于或等于零,或者如果 wh 的乘积大于 Integer.MAX_VALUE 或者如果 scanlineStride 是小于零,或者如果 bankIndices 的长度不等于 bandOffsets 的长度
      RasterFormatException - 如果计算 location.x + wlocation.y + h 导致整数溢出
    • createPackedRaster

      public static WritableRaster  createPackedRaster(DataBuffer  dataBuffer, int w, int h, int scanlineStride, int[] bandMasks, Point  location)
      基于具有指定 DataBuffer、宽度、高度、扫描线步幅和波段掩码的 SinglePixelPackedSampleModel 创建 Raster。带的数量是从 bandMasks.length 推断出来的。 Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。
      参数:
      dataBuffer - 包含图像数据的 DataBuffer
      w - 图像数据的像素宽度
      h - 图像数据的像素高度
      scanlineStride - 图像数据的行步幅
      bandMasks - 包含每个波段条目的数组
      location - Raster 的左上角
      返回:
      具有指定 DataBuffer 、宽度、高度、扫描线步幅和波段掩码的 WritableRaster 对象。
      抛出:
      RasterFormatException - 如果 wh 小于或等于零,或者计算 location.x + wlocation.y + h 导致整数溢出
      IllegalArgumentException - 如果 dataBuffer 不是受支持的数据类型之一,即 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
      RasterFormatException - 如果 dataBuffer 有多个银行。
      NullPointerException - 如果 dataBuffer 为空
    • createPackedRaster

      public static WritableRaster  createPackedRaster(DataBuffer  dataBuffer, int w, int h, int bitsPerPixel, Point  location)
      基于具有指定 DataBuffer、宽度、高度和每像素位数的 MultiPixelPackedSampleModel 创建 Raster。 Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。
      参数:
      dataBuffer - 包含图像数据的 DataBuffer
      w - 图像数据的像素宽度
      h - 图像数据的像素高度
      bitsPerPixel - 每个像素的位数
      location - Raster 的左上角
      返回:
      具有指定 DataBuffer 、宽度、高度和每像素位数的 WritableRaster 对象。
      抛出:
      RasterFormatException - 如果 wh 小于或等于零,或者计算 location.x + wlocation.y + h 导致整数溢出
      IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一,即 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
      RasterFormatException - 如果 dataBuffer 有多个银行。
      NullPointerException - 如果 dataBuffer 为空
    • createRaster

      public static Raster  createRaster(SampleModel  sm, DataBuffer  db, Point  location)
      使用指定的 SampleModel 和 DataBuffer 创建一个 Raster。 Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。
      参数:
      sm - 指定的 SampleModel
      db - 指定的 DataBuffer
      location - Raster 的左上角
      返回:
      具有指定的 SampleModelDataBuffer 和位置的 Raster
      抛出:
      RasterFormatException - 如果计算 location.x + sm.getWidth()location.y + sm.getHeight() 导致整数溢出
      RasterFormatException - 如果 db 有多个库且 sm 是 PixelInterleavedSampleModel、SinglePixelPackedSampleModel 或 MultiPixelPackedSampleModel。
      NullPointerException - 如果 SampleModel 或 DataBuffer 为空
    • createWritableRaster

      public static WritableRaster  createWritableRaster(SampleModel  sm, Point  location)
      创建具有指定 SampleModel 的 WritableRaster。 Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。
      参数:
      sm - 指定的 SampleModel
      location - WritableRaster 的左上角
      返回:
      具有指定 SampleModel 和位置的 WritableRaster
      抛出:
      RasterFormatException - 如果计算 location.x + sm.getWidth()location.y + sm.getHeight() 导致整数溢出
    • createWritableRaster

      public static WritableRaster  createWritableRaster(SampleModel  sm, DataBuffer  db, Point  location)
      使用指定的 SampleModel 和 DataBuffer 创建 WritableRaster。 Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。
      参数:
      sm - 指定的 SampleModel
      db - 指定的 DataBuffer
      location - WritableRaster 的左上角
      返回:
      具有指定 SampleModelDataBuffer 和位置的 WritableRaster
      抛出:
      RasterFormatException - 如果计算 location.x + sm.getWidth()location.y + sm.getHeight() 导致整数溢出
      RasterFormatException - 如果 db 有多个库且 sm 是 PixelInterleavedSampleModel、SinglePixelPackedSampleModel 或 MultiPixelPackedSampleModel。
      NullPointerException - 如果 SampleModel 或 DataBuffer 为空
    • getParent

      public Raster  getParent()
      返回此 Raster 的父 Raster(如果有)或 null。
      返回:
      父栅格或 null
    • getSampleModelTranslateX

      public final int getSampleModelTranslateX()
      返回从 SampleModel 坐标系到 Raster 坐标系的 X 平移。要将像素的 X 坐标从 Raster 坐标系转换为 SampleModel 坐标系,必须减去该值。
      返回:
      从 Raster 的 SampleModel 坐标空间到 Raster 坐标空间的 X 平移。
    • getSampleModelTranslateY

      public final int getSampleModelTranslateY()
      返回从 SampleModel 坐标系到 Raster 坐标系的 Y 平移。要将像素的 Y 坐标从 Raster 坐标系转换为 SampleModel 坐标系,必须减去该值。
      返回:
      从 Raster 的 SampleModel 坐标空间到 Raster 坐标空间的 Y 平移。
    • createCompatibleWritableRaster

      public WritableRaster  createCompatibleWritableRaster()
      使用相同的 SampleModel 和新初始化的 DataBuffer 创建与此 Raster 大小相同的兼容 WritableRaster。
      返回:
      具有相同样本模型和新数据缓冲区的兼容 WritableRaster
    • createCompatibleWritableRaster

      public WritableRaster  createCompatibleWritableRaster(int w, int h)
      创建具有指定大小、新 SampleModel 和新初始化 DataBuffer 的兼容 WritableRaster。
      参数:
      w - 新的WritableRaster的指定宽度
      h - 新的WritableRaster的指定高度
      返回:
      具有指定大小的兼容 WritableRaster 以及新的样本模型和数据缓冲区。
      抛出:
      RasterFormatException - 如果宽度或高度小于或等于零。
    • createCompatibleWritableRaster

      public WritableRaster  createCompatibleWritableRaster(Rectangle  rect)
      创建一个兼容的 WritableRaster,其位置(minX、minY)和大小(宽度、高度)由 rect、一个新的 SampleModel 和一个新的初始化 DataBuffer 指定。
      参数:
      rect - 一个 Rectangle 指定 WritableRaster 的大小和位置
      返回:
      具有指定大小和位置的兼容 WritableRaster 以及新的示例模型和数据缓冲区。
      抛出:
      RasterFormatException - 如果 rect 的宽度或高度小于或等于零,或者计算 rect.x + rect.widthrect.y + rect.height 导致整数溢出
      NullPointerException - 如果 rect 为空
    • createCompatibleWritableRaster

      public WritableRaster  createCompatibleWritableRaster(int x, int y, int w, int h)
      创建具有指定位置(minX、minY)和大小(宽度、高度)、新 SampleModel 和新初始化 DataBuffer 的兼容 WritableRaster。
      参数:
      x - WritableRaster 左上角的 X 坐标
      y - WritableRaster左上角的Y坐标
      w - WritableRaster 的指定宽度
      h - WritableRaster 的指定高度
      返回:
      具有指定大小和位置的兼容 WritableRaster 以及新的示例模型和数据缓冲区。
      抛出:
      RasterFormatException - 如果 wh 小于或等于零,或者计算 x + wy + h 导致整数溢出
    • createTranslatedChild

      public Raster  createTranslatedChild(int childMinX, int childMinY)
      创建一个与此具有相同大小、SampleModel 和 DataBuffer 的 Raster,但位置不同。新 Raster 将拥有对当前 Raster 的引用,可通过其 getParent() 方法访问。
      参数:
      childMinX——新Raster左上角的X坐标
      childMinY——新Raster左上角的Y坐标
      返回:
      具有与此 Raster 相同大小、SampleModel 和 DataBuffer 的新 Raster,但具有指定位置。
      抛出:
      RasterFormatException - 如果计算 childMinX + this.getWidth()childMinY + this.getHeight() 导致整数溢出
    • createChild

      public Raster  createChild(int parentX, int parentY, int width, int height, int childMinX, int childMinY, int[] bandList)
      返回一个新的 Raster,它共享此 Raster 的 DataBuffer 的全部或部分。新 Raster 将拥有对当前 Raster 的引用,可通过其 getParent() 方法访问。

      parentX、parentY、width、height参数在这个Raster的坐标空间中组成一个Rectangle,表示要共享的像素区域。如果此Rectangle 不包含在当前 Raster 的边界内,将引发错误。

      新光栅还可以转换为与当前光栅所用坐标系不同的平面坐标系。 childMinX 和 childMinY 参数给出返回的 Raster 左上像素的新 (x, y) 坐标;新 Raster 中的坐标 (childMinX, childMinY) 将映射到与当前 Raster 中的坐标 (parentX, parentY) 相同的像素。

      可以通过 bandList 参数将新栅格定义为仅包含当前栅格波段的子集,可能重新排序。如果 bandList 为 null,则采用当前顺序包含当前栅格的所有波段。

      要创建包含当前栅格的子区域但共享其坐标系和波段的新栅格,应调用此方法,其中 childMinX 等于 parentX,childMinY 等于 parentY,bandList 等于 null。

      参数:
      parentX - 此 Raster 坐标中左上角的 X 坐标
      parentY - 此 Raster 坐标中左上角的 Y 坐标
      width - 从 (parentX, parentY) 开始的区域宽度
      height - 从 (parentX, parentY) 开始的区域高度。
      childMinX - 返回的Raster左上角的X坐标
      childMinY - 返回的Raster左上角的Y坐标
      bandList - 波段索引数组,或为 null 以使用所有波段
      返回:
      一个新的Raster
      抛出:
      RasterFormatException - 如果指定的子区域在栅格边界之外。
      RasterFormatException - 如果 widthheight 小于或等于零,或计算 parentX + widthparentY + heightchildMinX + widthchildMinY + height 中的任何一个导致整数溢出
    • getBounds

      public Rectangle  getBounds()
      返回此 Raster 的边界 Rectangle。此函数返回与 getMinX/MinY/Width/Height 相同的信息。
      返回:
      这个 Raster 的边界框。
    • getMinX

      public final int getMinX()
      返回 Raster 的最小有效 X 坐标。
      返回:
      这个 Raster 的最小 x 坐标。
    • getMinY

      public final int getMinY()
      返回 Raster 的最小有效 Y 坐标。
      返回:
      这个 Raster 的最小 y 坐标。
    • getWidth

      public final int getWidth()
      返回 Raster 的宽度(以像素为单位)。
      返回:
      这个 Raster 的宽度。
    • getHeight

      public final int getHeight()
      返回栅格的高度(以像素为单位)。
      返回:
      这个 Raster 的高度。
    • getNumBands

      public final int getNumBands()
      返回此 Raster 中的波段数(每像素样本数)。
      返回:
      这个 Raster 的波段数。
    • getNumDataElements

      public final int getNumDataElements()
      通过 getDataElements 和 setDataElements 方法返回传输一个像素所需的数据元素数。当通过这些方法传输像素时,它们可能以打包或未打包的格式传输,具体取决于底层 SampleModel 的实现。使用这些方法,像素作为 getNumDataElements() 元素的数组传输,这些元素的基本类型由 getTransferType() 给出。 TransferType 可能与 DataBuffer 的存储数据类型相同,也可能不同。
      返回:
      数据元素的数量。
    • getTransferType

      public final int getTransferType()
      返回用于通过 getDataElements 和 setDataElements 方法传输像素的 TransferType。当通过这些方法传输像素时,它们可能以打包或未打包的格式传输,具体取决于底层 SampleModel 的实现。使用这些方法,像素作为 getNumDataElements() 元素的数组传输,这些元素的基本类型由 getTransferType() 给出。 TransferType 可能与 DataBuffer 的存储数据类型相同,也可能不同。 TransferType 将是 DataBuffer 中定义的类型之一。
      返回:
      这种传输类型。
    • getDataBuffer

      public DataBuffer  getDataBuffer()
      返回与此 Raster 关联的 DataBuffer。
      返回:
      这个 RasterDataBuffer
    • getSampleModel

      public SampleModel  getSampleModel()
      返回描述图像数据布局的 SampleModel。
      返回:
      这个RasterSampleModel
    • getDataElements

      public Object  getDataElements(int x, int y, Object  outData)
      返回类型为 TransferType 的原始数组中单个像素的数据。对于 Java 2D(tm) API 支持的图像数据,这将是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT、DataBuffer.TYPE_SHORT、DataBuffer.TYPE_FLOAT 或 DataBuffer.TYPE_DOUBLE 之一。数据可以打包格式返回,从而提高数据传输的效率。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。如果输入对象不为 null 并且引用了除 TransferType 数组以外的任何内容,将抛出 ClassCastException。
      参数:
      x - 像素位置的X坐标
      y - 像素位置的Y坐标
      outData - 对由 getTransferType() 和长度 getNumDataElements() 定义的类型数组的对象引用。如果为 null,将分配适当类型和大小的数组
      返回:
      对由具有请求的像素数据的 getTransferType() 定义的类型数组的对象引用。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标不在边界内,或者如果 outData 太小而无法容纳输出。
      参见:
    • getDataElements

      public Object  getDataElements(int x, int y, int w, int h, Object  outData)
      返回类型为 TransferType 的原始数组中指定像素矩形的像素数据。对于 Java 2D API 支持的图像数据,这将是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT、DataBuffer.TYPE_SHORT、DataBuffer.TYPE_FLOAT 或 DataBuffer.TYPE_DOUBLE 之一。数据可以打包格式返回,从而提高数据传输的效率。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。如果输入对象不为 null 并且引用了除 TransferType 数组以外的任何内容,将抛出 ClassCastException。
      参数:
      x - 左上像素位置的 X 坐标
      y - 左上角像素位置的 Y 坐标
      w - 像素矩形的宽度
      h - 像素矩形的高度
      outData - 对由 getTransferType() 和长度 w*h*getNumDataElements() 定义的类型数组的对象引用。如果为 null,将分配适当类型和大小的数组。
      返回:
      对由具有请求的像素数据的 getTransferType() 定义的类型数组的对象引用。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标不在边界内,或者如果 outData 太小而无法容纳输出。
      参见:
    • getPixel

      public int[] getPixel(int x, int y, int[] iArray)
      返回指定像素的 int 数组中的样本。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。
      参数:
      x - 像素位置的X坐标
      y - 像素位置的Y坐标
      iArray - 一个可选的预分配 int 数组
      返回:
      指定像素的样本。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标不在边界内,或者如果 iArray 太小而无法容纳输出。
    • getPixel

      public float[] getPixel(int x, int y, float[] fArray)
      返回指定像素的浮点数组中的样本。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。
      参数:
      x - 像素位置的X坐标
      y - 像素位置的Y坐标
      fArray - 一个可选的预分配浮点数组
      返回:
      指定像素的样本。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标不在边界内,或者如果 fArray 太小而无法容纳输出。
    • getPixel

      public double[] getPixel(int x, int y, double[] dArray)
      返回指定像素的双精度数组中的样本。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。
      参数:
      x - 像素位置的X坐标
      y - 像素位置的Y坐标
      dArray - 一个可选的预分配双数组
      返回:
      指定像素的样本。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标不在边界内,或者 dArray 太小而无法容纳输出。
    • getPixels

      public int[] getPixels(int x, int y, int w, int h, int[] iArray)
      返回一个 int 数组,其中包含像素矩形的所有样本,每个数组元素一个样本。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。
      参数:
      x - 左上像素位置的 X 坐标
      y - 左上角像素位置的 Y 坐标
      w - 像素矩形的宽度
      h - 像素矩形的高度
      iArray - 可选的预分配 int 数组
      返回:
      指定像素矩形的样本。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标不在边界内,或者如果 iArray 太小而无法容纳输出。
    • getPixels

      public float[] getPixels(int x, int y, int w, int h, float[] fArray)
      返回一个包含像素矩形的所有样本的浮点数组,每个数组元素一个样本。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。
      参数:
      x - 像素位置的X坐标
      y - 像素位置的Y坐标
      w - 像素矩形的宽度
      h - 像素矩形的高度
      fArray - 可选的预分配浮点数组
      返回:
      指定像素矩形的样本。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标不在边界内,或者如果 fArray 太小而无法容纳输出。
    • getPixels

      public double[] getPixels(int x, int y, int w, int h, double[] dArray)
      返回一个包含像素矩形的所有样本的双精度数组,每个数组元素一个样本。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。
      参数:
      x - 左上像素位置的 X 坐标
      y - 左上角像素位置的 Y 坐标
      w - 像素矩形的宽度
      h - 像素矩形的高度
      dArray - 可选的预分配双数组
      返回:
      指定像素矩形的样本。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标不在边界内,或者 dArray 太小而无法容纳输出。
    • getSample

      public int getSample(int x, int y, int b)
      以 int 形式返回位于 (x,y) 处像素的指定波段中的样本。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。
      参数:
      x - 像素位置的X坐标
      y - 像素位置的Y坐标
      b - 乐队回归
      返回:
      指定坐标处像素的指定波段中的样本。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引不在边界内。
    • getSampleFloat

      public float getSampleFloat(int x, int y, int b)
      将位于 (x,y) 处的像素的指定波段中的样本作为浮点数返回。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。
      参数:
      x - 像素位置的X坐标
      y - 像素位置的Y坐标
      b - 乐队回归
      返回:
      指定坐标处像素的指定波段中的样本。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引不在边界内。
    • getSampleDouble

      public double getSampleDouble(int x, int y, int b)
      将位于 (x,y) 处的像素的指定波段中的样本作为双精度值返回。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。
      参数:
      x - 像素位置的X坐标
      y - 像素位置的Y坐标
      b - 乐队回归
      返回:
      指定坐标处像素的指定波段中的样本。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引不在边界内。
    • getSamples

      public int[] getSamples(int x, int y, int w, int h, int b, int[] iArray)
      返回 int 数组中指定像素矩形的指定波段的样本,每个数组元素一个样本。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。
      参数:
      x - 左上像素位置的 X 坐标
      y - 左上角像素位置的 Y 坐标
      w - 像素矩形的宽度
      h - 像素矩形的高度
      b - 乐队回归
      iArray - 可选的预分配 int 数组
      返回:
      指定像素矩形的指定波段的样本。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引不在边界内,或者如果 iArray 太小而无法容纳输出。
    • getSamples

      public float[] getSamples(int x, int y, int w, int h, int b, float[] fArray)
      返回浮点数组中指定像素矩形的指定波段的样本,每个数组元素一个样本。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。
      参数:
      x - 左上像素位置的 X 坐标
      y - 左上角像素位置的 Y 坐标
      w - 像素矩形的宽度
      h - 像素矩形的高度
      b - 乐队回归
      fArray - 可选的预分配浮点数组
      返回:
      指定像素矩形的指定波段的样本。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引不在边界内,或者如果 fArray 太小而无法容纳输出。
    • getSamples

      public double[] getSamples(int x, int y, int w, int h, int b, double[] dArray)
      返回双精度数组中指定像素矩形的指定波段的样本,每个数组元素一个样本。如果坐标不在边界内,则可能会抛出 ArrayIndexOutOfBoundsException。但是,不能保证显式边界检查。
      参数:
      x - 左上像素位置的 X 坐标
      y - 左上角像素位置的 Y 坐标
      w - 像素矩形的宽度
      h - 像素矩形的高度
      b - 乐队回归
      dArray - 可选的预分配双数组
      返回:
      指定像素矩形的指定波段的样本。
      抛出:
      ArrayIndexOutOfBoundsException - 如果坐标或波段索引不在边界内,或者 dArray 太小而无法容纳输出。