- 直接已知的子类:
-
WritableRaster
Raster定义了占据平面特定矩形区域的像素的值,不一定包括(0, 0)。该矩形,称为Raster的边界矩形,并可通过getBounds方法获得,由minX,minY,width和height值定义。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。通过这些方法创建的Raster可以通过getParent方法返回对它们从中创建的Raster的引用。对于不是通过调用createTranslatedChild或createChild来构造的Raster,getParent将返回null。
createTranslatedChild方法返回一个新的Raster,它共享当前Raster的所有数据,但占据具有相同宽度和高度但具有不同起始点的边界矩形。例如,如果父Raster占据区域(10, 10)到(100, 100),并且定义了从(50, 50)开始的翻译Raster,则父级的像素(20, 20)和子级的像素(60, 60)占据两个Raster共享的DataBuffer中的相同位置。在第一种情况下,应将(-10,-10)添加到像素坐标以获得相应的SampleModel坐标,在第二种情况下,应添加(-50,-50)。
通过从父Raster的sampleModelTranslateX和sampleModelTranslateY值中减去子Raster的值,可以确定父Raster和子Raster之间的平移。
createChild方法可用于创建仅占据其父边界矩形的子集(具有相同或翻译的坐标系)或具有其父边界矩形的一部分的子集的新Raster。
所有构造函数都是受保护的。创建Raster的正确方法是使用此类中定义的静态create方法之一。这些方法创建使用标准Interleaved,Banded和Packed SampleModels的Raster实例,并且可能比通过组合外部生成的SampleModel和DataBuffer创建的Raster更有效地处理。
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionprotected DataBuffer
存储图像数据的DataBuffer。protected int
此Raster的高度。protected int
此Raster左上角像素的X坐标。protected int
此Raster左上角像素的Y坐标。protected int
Raster中的波段数。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
此Raster的宽度。 -
Constructor Summary
ModifierConstructorDescriptionprotected
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。 -
Method Summary
Modifier and TypeMethodDescriptionstatic WritableRaster
createBandedRaster
(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point location) 基于具有指定数据类型,宽度,高度,扫描线跨距,bank索引和波段偏移的BandedSampleModel创建Raster。static WritableRaster
createBandedRaster
(int dataType, int w, int h, int bands, Point location) 基于具有指定数据类型,宽度,高度和波段数的BandedSampleModel创建Raster。static WritableRaster
createBandedRaster
(DataBuffer dataBuffer, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point location) 基于具有指定DataBuffer,宽度,高度,扫描线跨距,bank索引和波段偏移的BandedSampleModel创建Raster。createChild
(int parentX, int parentY, int width, int height, int childMinX, int childMinY, int[] bandList) 返回一个新的Raster,它共享此Raster的全部或部分DataBuffer。创建一个与此Raster大小相同,具有相同SampleModel和新初始化DataBuffer的兼容WritableRaster。createCompatibleWritableRaster
(int w, int h) 创建一个具有指定大小,新SampleModel和新初始化DataBuffer的兼容WritableRaster。createCompatibleWritableRaster
(int x, int y, int w, int h) 创建一个具有指定位置(minX,minY)和大小(宽度,高度),新SampleModel和新初始化DataBuffer的兼容WritableRaster。创建一个具有由rect指定的位置(minX,minY)和大小(宽度,高度)的兼容WritableRaster,新SampleModel和新初始化DataBuffer。static WritableRaster
createInterleavedRaster
(int dataType, int w, int h, int scanlineStride, int pixelStride, int[] bandOffsets, Point location) 基于具有指定数据类型,宽度,高度,扫描线跨距,像素跨距和波段偏移的PixelInterleavedSampleModel创建Raster。static WritableRaster
createInterleavedRaster
(int dataType, int w, int h, int bands, Point location) 基于具有指定数据类型,宽度,高度和波段数的PixelInterleavedSampleModel创建Raster。static WritableRaster
createInterleavedRaster
(DataBuffer dataBuffer, int w, int h, int scanlineStride, int pixelStride, int[] bandOffsets, Point location) 基于具有指定DataBuffer,宽度,高度,扫描线跨距,像素跨距和波段偏移的PixelInterleavedSampleModel创建Raster。static WritableRaster
createPackedRaster
(int dataType, int w, int h, int[] bandMasks, Point location) 基于具有指定数据类型,宽度,高度和波段掩码的SinglePixelPackedSampleModel创建Raster。static WritableRaster
createPackedRaster
(int dataType, int w, int h, int bands, int bitsPerBand, Point location) 基于具有指定数据类型,宽度,高度,波段数和每波段位数的打包SampleModel创建Raster。static WritableRaster
createPackedRaster
(DataBuffer dataBuffer, int w, int h, int scanlineStride, int[] bandMasks, Point location) 基于具有指定DataBuffer,宽度,高度,扫描线跨距和波段掩码的SinglePixelPackedSampleModel创建Raster。static WritableRaster
createPackedRaster
(DataBuffer dataBuffer, int w, int h, int bitsPerPixel, Point location) 基于具有指定DataBuffer,宽度,高度和每像素位数的MultiPixelPackedSampleModel创建Raster。static Raster
createRaster
(SampleModel sm, DataBuffer db, Point location) 使用指定的SampleModel和DataBuffer创建Raster。createTranslatedChild
(int childMinX, int childMinY) 创建一个与此Raster大小,SampleModel和DataBuffer相同,但位置不同的Raster。static WritableRaster
createWritableRaster
(SampleModel sm, DataBuffer db, Point location) 使用指定的SampleModel和DataBuffer创建WritableRaster。static WritableRaster
createWritableRaster
(SampleModel sm, Point location) 使用指定的SampleModel创建WritableRaster。返回此Raster的边界矩形。返回与此Raster关联的DataBuffer。getDataElements
(int x, int y, int w, int h, Object outData) 返回TransferType类型的原始数组中指定像素矩形的像素数据。getDataElements
(int x, int y, Object outData) 返回TransferType类型的原始数组中指定像素的数据。final int
返回Raster的像素高度。final int
getMinX()
返回Raster的最小有效X坐标。final int
getMinY()
返回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) 返回指定像素的整数数组中的样本。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
getSample
(int x, int y, int b) 返回位于(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) 返回整数数组中指定像素矩形的指定波段的样本,每个数组元素一个样本。final int
返回用于通过getDataElements和setDataElements方法传输像素的TransferType。final int
getWidth()
返回Raster的像素宽度。
-
Field Details
-
sampleModel
描述如何将此Raster的像素存储在DataBuffer中的SampleModel。 -
dataBuffer
存储图像数据的DataBuffer。 -
minX
protected int minX此Raster左上角像素的X坐标。 -
minY
protected int minY该栅格的左上像素的Y坐标。 -
width
protected int width该栅格的宽度。 -
height
protected int height该栅格的高度。 -
sampleModelTranslateX
protected int sampleModelTranslateX从栅格的SampleModel的坐标空间到栅格本身坐标空间的X平移量。 -
sampleModelTranslateY
protected int sampleModelTranslateY从栅格的SampleModel的坐标空间到栅格本身坐标空间的Y平移量。 -
numBands
protected int numBands栅格中的波段数。 -
numDataElements
protected int numDataElements每个像素的DataBuffer数据元素数。 -
parent
该栅格的父级,如果没有则为null。
-
-
Constructor Details
-
Raster
使用给定的SampleModel构造一个栅格。栅格的左上角是原点,与SampleModel大小相同。会自动创建一个足够描述栅格的DataBuffer。- 参数:
-
sampleModel
- 指定布局的SampleModel -
origin
- 指定原点的Point - 抛出:
-
RasterFormatException
- 如果计算origin.x + sampleModel.getWidth()
或origin.y + sampleModel.getHeight()
导致整数溢出 -
NullPointerException
- 如果sampleModel
或origin
为null
-
Raster
使用给定的SampleModel和DataBuffer构造一个栅格。栅格的左上角是原点,与SampleModel大小相同。DataBuffer未初始化,必须与SampleModel兼容。- 参数:
-
sampleModel
- 指定布局的SampleModel -
dataBuffer
- 包含图像数据的DataBuffer -
origin
- 指定原点的Point - 抛出:
-
RasterFormatException
- 如果计算origin.x + sampleModel.getWidth()
或origin.y + sampleModel.getHeight()
导致整数溢出 -
NullPointerException
- 如果sampleModel
或origin
为null
-
Raster
protected Raster(SampleModel sampleModel, DataBuffer dataBuffer, Rectangle aRegion, Point sampleModelTranslate, Raster parent) 使用给定的SampleModel、DataBuffer和父级构造一个栅格。aRegion指定新栅格的边界矩形。当转换为基本栅格的坐标系时,aRegion必须包含在基本栅格中(基本栅格是没有父级的祖先栅格)。sampleModelTranslate指定新栅格的sampleModelTranslateX和sampleModelTranslateY值。请注意,此构造函数通常应由其他构造函数或创建方法调用,不应直接使用。- 参数:
-
sampleModel
- 指定布局的SampleModel -
dataBuffer
- 包含图像数据的DataBuffer -
aRegion
- 指定图像区域的Rectangle -
sampleModelTranslate
- 指定从SampleModel到栅格坐标的平移量的Point -
parent
- 该栅格的父级(如果有) - 抛出:
-
NullPointerException
- 如果sampleModel
、dataBuffer
、aRegion
或sampleModelTranslate
中的任何一个为null -
RasterFormatException
- 如果aRegion
的宽度或高度小于或等于零,或者计算aRegion.x + aRegion.width
或aRegion.y + aRegion.height
导致整数溢出
-
-
Method Details
-
createInterleavedRaster
public static WritableRaster createInterleavedRaster(int dataType, int w, int h, int bands, Point location) 基于具有指定数据类型、宽度、高度和波段数的PixelInterleavedSampleModel创建一个栅格。栅格的左上角由location参数给出。如果location为null,则将使用(0, 0)。dataType参数应为DataBuffer类中定义的枚举值之一。
目前不支持交错的
DataBuffer.TYPE_INT
栅格。要创建类型为DataBuffer.TYPE_INT
的1波段栅格,请使用Raster.createPackedRaster()。目前仅支持的数据类型是TYPE_BYTE和TYPE_USHORT。
- 参数:
-
dataType
- 用于存储样本的数据类型 -
w
- 图像数据的像素宽度 -
h
- 图像数据的像素高度 -
bands
- 波段数 -
location
-Raster
的左上角 - 返回:
- 具有指定数据类型、宽度、高度和波段数的WritableRaster对象。
- 抛出:
-
IllegalArgumentException
- 如果dataType
不是受支持的数据类型之一 -
IllegalArgumentException
- 如果bands
小于1 -
IllegalArgumentException
- 如果w
和h
都不大于0 -
IllegalArgumentException
- 如果w
和h
的乘积大于Integer.MAX_VALUE
-
RasterFormatException
- 如果计算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创建一个栅格。从bandOffsets.length推断出波段数。栅格的左上角由location参数给出。如果location为null,则将使用(0, 0)。dataType参数应为DataBuffer类中定义的枚举值之一。
目前不支持交错的
DataBuffer.TYPE_INT
栅格。要创建类型为DataBuffer.TYPE_INT
的1波段栅格,请使用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
都不大于0 -
IllegalArgumentException
- 如果w
和h
的乘积大于Integer.MAX_VALUE
-
RasterFormatException
- 如果计算location.x + w
或location.y + h
导致整数溢出 -
IllegalArgumentException
- 如果scanlineStride
小于0 -
IllegalArgumentException
- 如果pixelStride
小于0 -
NullPointerException
- 如果bandOffsets
为null
-
createBandedRaster
public static WritableRaster createBandedRaster(int dataType, int w, int h, int bands, Point location) 基于具有指定数据类型、宽度、高度和波段数的BandedSampleModel创建一个栅格。栅格的左上角由location参数给出。如果location为null,则将使用(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_INT
-
IllegalArgumentException
- 如果w
和h
都不大于 0 -
IllegalArgumentException
- 如果w
和h
的乘积大于Integer.MAX_VALUE
-
IllegalArgumentException
- 如果计算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。波段数量由 bankIndices.length 和 bandOffsets.length 推断,它们必须相同。Raster 的左上角由 location 参数给出。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_INT
-
IllegalArgumentException
- 如果w
和h
都不大于 0 -
IllegalArgumentException
- 如果w
和h
的乘积大于Integer.MAX_VALUE
-
IllegalArgumentException
- 如果计算location.x + w
或location.y + h
会导致整数溢出 -
IllegalArgumentException
- 如果scanlineStride
小于 0 -
ArrayIndexOutOfBoundsException
- 如果bankIndices
是null
-
NullPointerException
- 如果bandOffsets
是null
-
createPackedRaster
public static WritableRaster createPackedRaster(int dataType, int w, int h, int[] bandMasks, Point location) 基于具有指定数据类型、宽度、高度和波段掩码的 SinglePixelPackedSampleModel 创建一个 Raster。波段数量由 bandMasks.length 推断。Raster 的左上角由 location 参数给出。如果 location 为 null,则使用 (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) 基于具有指定数据类型、宽度、高度、波段数量和每个波段的位数的 packed SampleModel 创建一个 Raster。如果波段数量为 1,则 SampleModel 将是 MultiPixelPackedSampleModel。如果波段数量大于 1,则 SampleModel 将是 SinglePixelPackedSampleModel,每个波段具有 bitsPerBand 位。在任一情况下,必须满足相应 SampleModel 强加的 dataType 和 bitsPerBand 的要求。
Raster 的左上角由 location 参数给出。如果 location 为 null,则使用 (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 的左上角由 location 参数给出。如果 location 为 null,则使用 (0, 0)。请注意,不支持交错的
DataBuffer.TYPE_INT
Rasters。要创建类型为DataBuffer.TYPE_INT
的 1 波段 Raster,请使用 Raster.createPackedRaster()。- 参数:
-
dataBuffer
- 包含图像数据的DataBuffer
-
w
- 图像数据的像素宽度 -
h
- 图像数据的像素高度 -
scanlineStride
- 图像数据的扫描线跨度 -
pixelStride
- 图像数据的像素跨度 -
bandOffsets
- 所有波段的偏移量 -
location
-Raster
的左上角 - 返回:
-
具有指定
DataBuffer
、宽度、高度、扫描线跨度、像素跨度和波段偏移量的WritableRaster对象。 - 抛出:
-
IllegalArgumentException
- 如果dataType
不是受支持的数据类型之一,即DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
-
NullPointerException
- 如果dataBuffer
为null -
IllegalArgumentException
- 如果dataType
不是受支持的数据类型之一,即DataBuffer.TYPE_BYTE
或DataBuffer.TYPE_USHORT
。 -
RasterFormatException
- 如果dataBuffer
具有多个存储区。 -
IllegalArgumentException
- 如果w
和h
都不大于0 -
IllegalArgumentException
- 如果w
和h
的乘积大于Integer.MAX_VALUE
-
RasterFormatException
- 如果计算location.x + w
或location.y + h
导致整数溢出 -
IllegalArgumentException
- 如果scanlineStride
小于0 -
IllegalArgumentException
- 如果pixelStride
小于0 -
NullPointerException
- 如果bandOffsets
为null
-
createBandedRaster
public static WritableRaster createBandedRaster(DataBuffer dataBuffer, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point location) 基于具有指定DataBuffer、宽度、高度、扫描线跨度、存储区索引和波段偏移量的BandedSampleModel创建一个Raster。波段数量从bankIndices.length和bandOffsets.length推断出,它们必须相同。Raster的左上角由location参数给出。如果location为null,则将使用(0, 0)。- 参数:
-
dataBuffer
- 包含图像数据的DataBuffer
-
w
- 图像数据的像素宽度 -
h
- 图像数据的像素高度 -
scanlineStride
- 图像数据的扫描线跨度 -
bankIndices
- 每个波段的存储区索引 -
bandOffsets
- 所有波段的偏移量 -
location
-Raster
的左上角 - 返回:
-
具有指定
DataBuffer
、宽度、高度、扫描线跨度、存储区索引和波段偏移量的WritableRaster对象。 - 抛出:
-
NullPointerException
- 如果dataBuffer
为null,或者bankIndices
为null,或者bandOffsets
为null -
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的左上角由location参数给出。如果location为null,则将使用(0, 0)。- 参数:
-
dataBuffer
- 包含图像数据的DataBuffer
-
w
- 图像数据的像素宽度 -
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_INT
-
RasterFormatException
- 如果dataBuffer
具有多个存储区。 -
NullPointerException
- 如果dataBuffer
为null
-
createPackedRaster
public static WritableRaster createPackedRaster(DataBuffer dataBuffer, int w, int h, int bitsPerPixel, Point location) 基于具有指定DataBuffer、宽度、高度和每像素位数的MultiPixelPackedSampleModel创建一个Raster。Raster的左上角由location参数给出。如果location为null,则将使用(0, 0)。- 参数:
-
dataBuffer
- 包含图像数据的DataBuffer
-
w
- 图像数据的像素宽度 -
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_INT
-
RasterFormatException
- 如果dataBuffer
具有多个存储区。 -
NullPointerException
- 如果dataBuffer
为null
-
createRaster
创建具有指定SampleModel和DataBuffer的Raster。Raster的左上角由location参数给出。如果location为null,则将使用(0, 0)。- 参数:
-
sm
- 指定的SampleModel
-
db
- 指定的DataBuffer
-
location
-Raster
的左上角 - 返回:
-
具有指定
SampleModel
、DataBuffer
和位置的Raster
。 - 抛出:
-
RasterFormatException
- 如果计算location.x + sm.getWidth()
或location.y + sm.getHeight()
导致整数溢出 -
RasterFormatException
- 如果db
具有多个存储区且sm
是PixelInterleavedSampleModel、SinglePixelPackedSampleModel或MultiPixelPackedSampleModel。 -
NullPointerException
- 如果SampleModel或DataBuffer为null
-
createWritableRaster
创建具有指定SampleModel的WritableRaster。Raster的左上角由location参数给出。如果location为null,则将使用(0, 0)。- 参数:
-
sm
- 指定的SampleModel
-
location
-WritableRaster
的左上角 - 返回:
-
具有指定
SampleModel
和位置的WritableRaster
。 - 抛出:
-
RasterFormatException
- 如果计算location.x + sm.getWidth()
或location.y + sm.getHeight()
导致整数溢出
-
createWritableRaster
创建具有指定SampleModel和DataBuffer的WritableRaster。Raster的左上角由location参数给出。如果location为null,则将使用(0, 0)。- 参数:
-
sm
- 指定的SampleModel
-
db
- 指定的DataBuffer
-
location
-WritableRaster
的左上角 - 返回:
-
一个带有指定
SampleModel
、DataBuffer
和位置的WritableRaster
- 抛出:
-
RasterFormatException
- 如果计算location.x + sm.getWidth()
或location.y + sm.getHeight()
导致整数溢出 -
RasterFormatException
- 如果db
有多个bank且sm
是PixelInterleavedSampleModel、SinglePixelPackedSampleModel或MultiPixelPackedSampleModel。 -
NullPointerException
- 如果SampleModel或DataBuffer为null
-
getParent
返回此Raster的父Raster(如果有)或null。- 返回:
-
父Raster或
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
创建一个与此Raster大小相同、具有相同SampleModel和新初始化DataBuffer的兼容WritableRaster。- 返回:
-
一个具有相同样本模型和新数据缓冲区的兼容
WritableRaster
。
-
createCompatibleWritableRaster
创建一个具有指定大小、新SampleModel和新初始化DataBuffer的兼容WritableRaster。- 参数:
-
w
- 新WritableRaster
的指定宽度 -
h
- 新WritableRaster
的指定高度 - 返回:
-
一个具有指定大小和新样本模型和数据缓冲区的兼容
WritableRaster
。 - 抛出:
-
RasterFormatException
- 如果宽度或高度小于或等于零。
-
createCompatibleWritableRaster
使用由rect指定的位置(minX,minY)和大小(宽度,高度)创建一个具有新SampleModel和新初始化DataBuffer的兼容WritableRaster。- 参数:
-
rect
- 指定WritableRaster
的大小和位置的Rectangle
- 返回:
-
一个具有指定大小和位置以及新样本模型和数据缓冲区的兼容
WritableRaster
。 - 抛出:
-
RasterFormatException
- 如果rect
的宽度或高度小于或等于零,或计算rect.x + rect.width
或rect.y + rect.height
导致整数溢出 -
NullPointerException
- 如果rect
为null
-
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
创建一个具有与此Raster相同大小、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的边界内,将抛出错误。
新的Raster还可以被转换为与当前Raster使用的平面的不同坐标系。childMinX和childMinY参数给出返回的Raster左上角像素的新(x,y)坐标;新Raster中的坐标(childMinX,childMinY)将映射到当前Raster中的坐标(parentX,parentY)的相同像素。
新的Raster可以被定义为仅包含当前Raster的一部分波段,可能通过bandList参数重新排序。如果bandList为null,则假定它包含当前Raster的所有波段,按照它们当前的顺序。
要创建一个包含当前Raster子区域的新Raster,但共享其坐标系和波段,应调用此方法,其中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的像素高度。- 返回:
-
此
Raster
的高度。
-
getNumBands
public final int getNumBands()返回此Raster中的波段数(每像素样本数)。- 返回:
-
此
Raster
的波段数。
-
getNumDataElements
public final int getNumDataElements()返回通过getDataElements和setDataElements方法传输一个像素所需的数据元素数。当通过这些方法传输像素时,它们可能以打包或未打包的格式传输,这取决于底层SampleModel的实现。使用这些方法,像素作为由getTransferType()给出的原始类型的getNumDataElements()元素数组传输。TransferType可能与DataBuffer的存储数据类型相同也可能不同。- 返回:
- 数据元素的数量。
-
getTransferType
public final int getTransferType()返回用于通过getDataElements和setDataElements方法传输像素的TransferType。当通过这些方法传输像素时,它们可能以打包或未打包的格式传输,这取决于底层SampleModel的实现。使用这些方法,像素作为由getTransferType()给出的原始类型的getNumDataElements()元素数组传输。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。但是,不保证显式边界检查。如果输入对象非空并引用除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。但是,不保证显式边界检查。如果输入对象非空并引用除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) 返回指定像素的float数组中的样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。但是,不保证显式边界检查。- 参数:
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
fArray
- 可选的预分配float数组 - 返回:
- 指定像素的样本。
- 抛出:
-
ArrayIndexOutOfBoundsException
- 如果坐标超出范围,或者fArray太小无法容纳输出。
-
getPixel
public double[] getPixel(int x, int y, double[] dArray) 返回指定像素的double数组中的样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。但是,不保证显式边界检查。- 参数:
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
dArray
- 可选的预分配double数组 - 返回:
- 指定像素的样本。
- 抛出:
-
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) 返回包含像素矩形中所有样本的float数组,每个数组元素一个样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。但是,不保证显式边界检查。- 参数:
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
w
- 像素矩形的宽度 -
h
- 像素矩形的高度 -
fArray
- 可选的预分配float数组 - 返回:
- 指定像素矩形的样本。
- 抛出:
-
ArrayIndexOutOfBoundsException
- 如果坐标超出范围,或者fArray太小无法容纳输出。
-
getPixels
public double[] getPixels(int x, int y, int w, int h, double[] dArray) 返回包含像素矩形中所有样本的double数组,每个数组元素一个样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。但是,不保证显式边界检查。- 参数:
-
x
- 左上角像素位置的X坐标 -
y
- 左上角像素位置的Y坐标 -
w
- 像素矩形的宽度 -
h
- 像素矩形的高度 -
dArray
- 可选的预分配double数组 - 返回:
- 指定像素矩形的样本。
- 抛出:
-
ArrayIndexOutOfBoundsException
- 如果坐标超出范围,或者dArray太小无法容纳输出。
-
getSample
public int getSample(int x, int y, int b) 返回位于(x,y)处的像素的指定波段中的样本作为int。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。但是,不保证显式边界检查。- 参数:
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
b
- 要返回的波段 - 返回:
- 指定坐标处像素的指定波段中的样本。
- 抛出:
-
ArrayIndexOutOfBoundsException
- 如果坐标或波段索引超出范围。
-
getSampleFloat
public float getSampleFloat(int x, int y, int b) 返回位于(x,y)处的像素的指定波段中的样本作为float。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。但是,不保证显式边界检查。- 参数:
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
b
- 要返回的波段 - 返回:
- 指定坐标处像素的指定波段中的样本。
- 抛出:
-
ArrayIndexOutOfBoundsException
- 如果坐标或波段索引超出范围。
-
getSampleDouble
public double getSampleDouble(int x, int y, int b) 返回位于(x,y)处的像素的指定波段中的样本作为double。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。但是,不保证显式边界检查。- 参数:
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
b
- 要返回的波段 - 返回:
- 指定坐标处像素指定波段的样本。
- 抛出:
-
ArrayIndexOutOfBoundsException
- 如果坐标或波段索引超出范围。
-
getSamples
public int[] getSamples(int x, int y, int w, int h, int b, int[] iArray) 返回指定矩形像素中指定波段的样本,每个数组元素一个样本。如果坐标超出范围,可能会抛出ArrayIndexOutOfBoundsException。但是,不保证显式边界检查。- 参数:
-
x
- 左上角像素位置的X坐标 -
y
- 左上角像素位置的Y坐标 -
w
- 像素矩形的宽度 -
h
- 像素矩形的高度 -
b
- 要返回的波段 -
iArray
- 可选的预分配整型数组 - 返回:
- 指定矩形像素中指定波段的样本。
- 抛出:
-
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太小无法容纳输出。
-