- 已知子类:
WritableRaster
光栅定义了占据平面特定矩形区域的像素值,不一定包括 (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此光栅的宽度。 -
构造方法总结
构造方法修饰符构造方法描述protectedRaster(SampleModel sampleModel, DataBuffer dataBuffer, Point origin) 使用给定的 SampleModel 和 DataBuffer 构造一个 Raster。protectedRaster(SampleModel sampleModel, DataBuffer dataBuffer, Rectangle aRegion, Point sampleModelTranslate, Raster parent) 使用给定的 SampleModel、DataBuffer 和父级构造一个 Raster。protectedRaster(SampleModel sampleModel, Point origin) 使用给定的 SampleModel 构造一个 Raster。 -
方法总结
修饰符和类型方法描述static WritableRastercreateBandedRaster(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point location) 基于具有指定数据类型、宽度、高度、扫描线步幅、银行指数和波段偏移的 BandedSampleModel 创建 Raster。static WritableRastercreateBandedRaster(int dataType, int w, int h, int bands, Point location) 基于具有指定数据类型、宽度、高度和波段数的 BandedSampleModel 创建 Raster。static WritableRastercreateBandedRaster(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。createCompatibleWritableRaster(int w, int h) 创建具有指定大小、新 SampleModel 和新初始化 DataBuffer 的兼容 WritableRaster。createCompatibleWritableRaster(int x, int y, int w, int h) 创建具有指定位置(minX、minY)和大小(宽度、高度)、新 SampleModel 和新初始化 DataBuffer 的兼容 WritableRaster。创建一个兼容的 WritableRaster,其位置(minX、minY)和大小(宽度、高度)由 rect、一个新的 SampleModel 和一个新的初始化 DataBuffer 指定。static WritableRastercreateInterleavedRaster(int dataType, int w, int h, int scanlineStride, int pixelStride, int[] bandOffsets, Point location) 基于具有指定数据类型、宽度、高度、扫描线步幅、像素步幅和波段偏移的 PixelInterleavedSampleModel 创建 Raster。static WritableRastercreateInterleavedRaster(int dataType, int w, int h, int bands, Point location) 基于具有指定数据类型、宽度、高度和波段数的 PixelInterleavedSampleModel 创建 Raster。static WritableRastercreateInterleavedRaster(DataBuffer dataBuffer, int w, int h, int scanlineStride, int pixelStride, int[] bandOffsets, Point location) 基于具有指定 DataBuffer、宽度、高度、扫描线步幅、像素步幅和波段偏移的 PixelInterleavedSampleModel 创建 Raster。static WritableRastercreatePackedRaster(int dataType, int w, int h, int[] bandMasks, Point location) 基于具有指定数据类型、宽度、高度和波段掩码的 SinglePixelPackedSampleModel 创建 Raster。static WritableRastercreatePackedRaster(int dataType, int w, int h, int bands, int bitsPerBand, Point location) 基于具有指定数据类型、宽度、高度、波段数和每波段位数的打包 SampleModel 创建 Raster。static WritableRastercreatePackedRaster(DataBuffer dataBuffer, int w, int h, int scanlineStride, int[] bandMasks, Point location) 基于具有指定 DataBuffer、宽度、高度、扫描线步幅和波段掩码的 SinglePixelPackedSampleModel 创建 Raster。static WritableRastercreatePackedRaster(DataBuffer dataBuffer, int w, int h, int bitsPerPixel, Point location) 基于具有指定 DataBuffer、宽度、高度和每像素位数的 MultiPixelPackedSampleModel 创建 Raster。static RastercreateRaster(SampleModel sm, DataBuffer db, Point location) 使用指定的 SampleModel 和 DataBuffer 创建一个 Raster。createTranslatedChild(int childMinX, int childMinY) 创建一个与此具有相同大小、SampleModel 和 DataBuffer 的 Raster,但位置不同。static WritableRastercreateWritableRaster(SampleModel sm, DataBuffer db, Point location) 使用指定的 SampleModel 和 DataBuffer 创建 WritableRaster。static WritableRastercreateWritableRaster(SampleModel sm, Point location) 创建具有指定 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 intgetMinX()返回 Raster 的最小有效 X 坐标。final intgetMinY()返回 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 数组,其中包含像素矩形的所有样本,每个数组元素一个样本。intgetSample(int x, int y, int b) 以 int 形式返回位于 (x,y) 处像素的指定波段中的样本。doublegetSampleDouble(int x, int y, int b) 将位于 (x,y) 处的像素的指定波段中的样本作为双精度值返回。floatgetSampleFloat(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 intgetWidth()返回 Raster 的宽度(以像素为单位)。
-
字段详细信息
-
sampleModel
描述此 Raster 中的像素如何存储在 DataBuffer 中的 SampleModel。 -
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
此 Raster 的父级,或为 null。
-
-
构造方法详细信息
-
Raster
使用给定的 SampleModel 构造一个 Raster。 Raster 的左上角为原点,与 SampleModel 大小相同。自动创建一个足以描述 Raster 的 DataBuffer。- 参数:
sampleModel- 指定布局的 SampleModelorigin- 指定原点的点- 抛出:
RasterFormatException- 如果计算origin.x + sampleModel.getWidth()或origin.y + sampleModel.getHeight()导致整数溢出NullPointerException-sampleModel或origin为空
-
Raster
使用给定的 SampleModel 和 DataBuffer 构造一个 Raster。 Raster 的左上角为原点,与 SampleModel 大小相同。 DataBuffer 未初始化,必须与 SampleModel 兼容。- 参数:
sampleModel- 指定布局的 SampleModeldataBuffer- 包含图像数据的 DataBufferorigin- 指定原点的点- 抛出:
RasterFormatException- 如果计算origin.x + sampleModel.getWidth()或origin.y + sampleModel.getHeight()导致整数溢出NullPointerException-sampleModel或origin为空
-
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- 指定布局的 SampleModeldataBuffer- 包含图像数据的 DataBufferaRegion- 指定图像区域的 RectanglesampleModelTranslate- 指定从 SampleModel 到 Raster 坐标的转换的点parent- 此光栅的父级(如果有)- 抛出:
NullPointerException- 如果sampleModel、dataBuffer、aRegion或sampleModelTranslate中的任何一个为空RasterFormatException- 如果aRegion的宽度或高度小于或等于零,或者计算aRegion.x + aRegion.width或aRegion.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小于 1IllegalArgumentException- 如果w和h不都 > 0IllegalArgumentException- 如果w和h的乘积大于Integer.MAX_VALUERasterFormatException- 如果计算location.x + w或location.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_BYTE或DataBuffer.TYPE_USHORT。IllegalArgumentException- 如果w和h不都 > 0IllegalArgumentException- 如果w和h的乘积大于Integer.MAX_VALUERasterFormatException- 如果计算location.x + w或location.y + h导致整数溢出IllegalArgumentException- 如果scanlineStride小于 0IllegalArgumentException- 如果pixelStride小于 0NullPointerException- 如果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_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INTIllegalArgumentException- 如果w和h不都大于 0IllegalArgumentException- 如果w和h的乘积大于Integer.MAX_VALUEIllegalArgumentException- 如果计算location.x + w或location.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_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INTIllegalArgumentException- 如果w和h不都大于 0IllegalArgumentException- 如果w和h的乘积大于Integer.MAX_VALUEIllegalArgumentException- 如果计算location.x + w或location.y + h导致整数溢出IllegalArgumentException- 如果scanlineStride小于 0ArrayIndexOutOfBoundsException- 如果bankIndices是nullNullPointerException- 如果bandOffsets是null
-
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- 如果w或h小于或等于零,或者计算location.x + w或location.y + h导致整数溢出IllegalArgumentException- 如果dataType不是受支持的数据类型之一,即DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.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- 如果w或h小于或等于零,或者计算location.x + w或location.y + h导致整数溢出IllegalArgumentException- 如果bitsPerBand和bands的乘积大于dataType持有的位数IllegalArgumentException- 如果bitsPerBand或bands不大于零IllegalArgumentException- 如果dataType不是受支持的数据类型之一,即DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.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- 包含图像数据的DataBufferw- 图像数据的像素宽度h- 图像数据的像素高度scanlineStride- 图像数据的行步幅pixelStride- 图像数据的像素跨度bandOffsets- 所有波段的偏移量location-Raster的左上角- 返回:
-
具有指定
DataBuffer、宽度、高度、扫描线步幅、像素步幅和波段偏移量的 WritableRaster 对象。 - 抛出:
IllegalArgumentException- 如果dataType不是受支持的数据类型之一,即DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORTNullPointerException- 如果dataBuffer为空IllegalArgumentException- 如果dataType不是受支持的数据类型之一,即DataBuffer.TYPE_BYTE或DataBuffer.TYPE_USHORT。RasterFormatException- 如果dataBuffer有多个银行。IllegalArgumentException- 如果w和h不都 > 0IllegalArgumentException- 如果w和h的乘积大于Integer.MAX_VALUERasterFormatException- 如果计算location.x + w或location.y + h导致整数溢出IllegalArgumentException- 如果scanlineStride小于 0IllegalArgumentException- 如果pixelStride小于 0NullPointerException- 如果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- 包含图像数据的DataBufferw- 图像数据的像素宽度h- 图像数据的像素高度scanlineStride- 图像数据的行步幅bankIndices- 每个波段的银行指数bandOffsets- 所有波段的偏移量location-Raster的左上角- 返回:
-
具有指定
DataBuffer、宽度、高度、扫描线步幅、银行指数和波段偏移量的 WritableRaster 对象。 - 抛出:
NullPointerException- 如果dataBuffer为空,或bankIndices为空,或bandOffsets为空IllegalArgumentException- 如果dataType不是受支持的数据类型之一,即DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT,或者如果w或h小于或等于零,或者如果w和h的乘积大于Integer.MAX_VALUE或者如果scanlineStride是小于零,或者如果bankIndices的长度不等于bandOffsets的长度RasterFormatException- 如果计算location.x + w或location.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- 包含图像数据的DataBufferw- 图像数据的像素宽度h- 图像数据的像素高度scanlineStride- 图像数据的行步幅bandMasks- 包含每个波段条目的数组location-Raster的左上角- 返回:
-
具有指定
DataBuffer、宽度、高度、扫描线步幅和波段掩码的 WritableRaster 对象。 - 抛出:
RasterFormatException- 如果w或h小于或等于零,或者计算location.x + w或location.y + h导致整数溢出IllegalArgumentException- 如果dataBuffer不是受支持的数据类型之一,即DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INTRasterFormatException- 如果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- 包含图像数据的DataBufferw- 图像数据的像素宽度h- 图像数据的像素高度bitsPerPixel- 每个像素的位数location-Raster的左上角- 返回:
-
具有指定
DataBuffer、宽度、高度和每像素位数的 WritableRaster 对象。 - 抛出:
RasterFormatException- 如果w或h小于或等于零,或者计算location.x + w或location.y + h导致整数溢出IllegalArgumentException- 如果dataType不是受支持的数据类型之一,即DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INTRasterFormatException- 如果dataBuffer有多个银行。NullPointerException- 如果dataBuffer为空
-
createRaster
使用指定的 SampleModel 和 DataBuffer 创建一个 Raster。 Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。- 参数:
sm- 指定的SampleModeldb- 指定的DataBufferlocation-Raster的左上角- 返回:
-
具有指定的
SampleModel、DataBuffer和位置的Raster。 - 抛出:
RasterFormatException- 如果计算location.x + sm.getWidth()或location.y + sm.getHeight()导致整数溢出RasterFormatException- 如果db有多个库且sm是 PixelInterleavedSampleModel、SinglePixelPackedSampleModel 或 MultiPixelPackedSampleModel。NullPointerException- 如果 SampleModel 或 DataBuffer 为空
-
createWritableRaster
创建具有指定 SampleModel 的 WritableRaster。 Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。- 参数:
sm- 指定的SampleModellocation-WritableRaster的左上角- 返回:
-
具有指定
SampleModel和位置的WritableRaster。 - 抛出:
RasterFormatException- 如果计算location.x + sm.getWidth()或location.y + sm.getHeight()导致整数溢出
-
createWritableRaster
使用指定的 SampleModel 和 DataBuffer 创建 WritableRaster。 Raster 的左上角由位置参数给出。如果位置为空,将使用 (0, 0)。- 参数:
sm- 指定的SampleModeldb- 指定的DataBufferlocation-WritableRaster的左上角- 返回:
-
具有指定
SampleModel、DataBuffer和位置的WritableRaster。 - 抛出:
RasterFormatException- 如果计算location.x + sm.getWidth()或location.y + sm.getHeight()导致整数溢出RasterFormatException- 如果db有多个库且sm是 PixelInterleavedSampleModel、SinglePixelPackedSampleModel 或 MultiPixelPackedSampleModel。NullPointerException- 如果 SampleModel 或 DataBuffer 为空
-
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
使用相同的 SampleModel 和新初始化的 DataBuffer 创建与此 Raster 大小相同的兼容 WritableRaster。- 返回:
-
具有相同样本模型和新数据缓冲区的兼容
WritableRaster。
-
createCompatibleWritableRaster
创建具有指定大小、新 SampleModel 和新初始化 DataBuffer 的兼容 WritableRaster。- 参数:
w- 新的WritableRaster的指定宽度h- 新的WritableRaster的指定高度- 返回:
-
具有指定大小的兼容
WritableRaster以及新的样本模型和数据缓冲区。 - 抛出:
RasterFormatException- 如果宽度或高度小于或等于零。
-
createCompatibleWritableRaster
创建一个兼容的 WritableRaster,其位置(minX、minY)和大小(宽度、高度)由 rect、一个新的 SampleModel 和一个新的初始化 DataBuffer 指定。- 参数:
rect- 一个Rectangle指定WritableRaster的大小和位置- 返回:
-
具有指定大小和位置的兼容
WritableRaster以及新的示例模型和数据缓冲区。 - 抛出:
RasterFormatException- 如果rect的宽度或高度小于或等于零,或者计算rect.x + rect.width或rect.y + rect.height导致整数溢出NullPointerException- 如果rect为空
-
createCompatibleWritableRaster
创建具有指定位置(minX、minY)和大小(宽度、高度)、新 SampleModel 和新初始化 DataBuffer 的兼容 WritableRaster。- 参数:
x-WritableRaster左上角的 X 坐标y-WritableRaster左上角的Y坐标w-WritableRaster的指定宽度h-WritableRaster的指定高度- 返回:
-
具有指定大小和位置的兼容
WritableRaster以及新的示例模型和数据缓冲区。 - 抛出:
RasterFormatException- 如果w或h小于或等于零,或者计算x + w或y + h导致整数溢出
-
createTranslatedChild
创建一个与此具有相同大小、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- 如果width或height小于或等于零,或计算parentX + width、parentY + height、childMinX + width或childMinY + height中的任何一个导致整数溢出
-
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
返回与此 Raster 关联的 DataBuffer。- 返回:
-
这个
Raster的DataBuffer。
-
getSampleModel
返回描述图像数据布局的 SampleModel。- 返回:
-
这个
Raster的SampleModel。
-
getDataElements
返回类型为 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
返回类型为 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 太小而无法容纳输出。
-