- java.lang.Object
-
- java.awt.image.Raster
-
- 已知直接子类:
-
WritableRaster
public class Raster extends Object
表示矩形像素阵列的类。 光栅封装存储示例值的DataBuffer和一个描述如何在DataBuffer中定位给定样本值的SampleModel。光栅定义占据平面的特定矩形区域的像素的值,不一定包括(0,0)。 被称为光栅的边界矩形并通过getBounds方法可用的矩形由minX,minY,width和height值定义。 minX和minY值定义栅格左上角的坐标。 对边界矩形外的像素的引用可能导致抛出异常,或者可能导致引用栅格相关联的DataBuffer的非预期元素。 用户有责任避免访问这些像素。
SampleModel描述了栅格的样本如何存储在DataBuffer的基元数组元素中。 样本可以像PixelInterleavedSampleModel或BandedSampleModel中的每个数据元素一样存储,或者将多个数据包装到一个元素中,如在SinglePixelPackedSampleModel或MultiPixelPackedSampleModel中。 SampleModel还控制样本是否进行符号扩展,允许将未签名的数据存储在已签名的Java数据类型(如byte,short和int)中。
虽然光栅可能存在于飞机上的任何位置,但是SampleModel使用从(0,0)开始的简单坐标系。 因此,栅格包含一个翻译因子,允许在栅格坐标系和SampleModel坐标系之间映射像素位置。 通过getSampleModelTranslateX和getSampleModelTranslateY方法可以从SampleModel坐标系转换为栅格的坐标系。
栅格可以通过显式构造或通过使用createChild和createTranslatedChild方法与另一个栅格共享DataBuffer。 通过这些方法创建的栅格可以通过getParent方法返回对其创建的栅格的引用。 对于没有通过调用createTranslatedChild或createChild构造的栅格,getParent将返回null。
createTranslatedChild方法返回一个新的Raster,它共享当前栅格的所有数据,但占用一个相同宽度和高度但具有不同起始点的边界矩形。 例如,如果父栅格占据了区域(10,10)到(100,100),并且被翻译的栅格被定义为在(50,50)处开始,则父像素(像素(20,20) 60,60)在两个Raster共享的DataBuffer中占据相同的位置。 在第一种情况下,应将(-10,-10)添加到像素坐标中以获得相应的SampleModel坐标,并且在第二种情况下(-50,-50)应该被添加。
父子节点之间的转换光栅可以通过从父节点的子像素中减去子样本的SampleModelTranslateX和sampleModelTranslateY值来确定。
createChild方法可以用于创建一个新的栅格,它只占据其父层的边界矩形(具有相同或翻译的坐标系)的子集,或者与其父层的子集。
所有构造函数都受到保护。 创建光栅的正确方法是使用此类中定义的静态创建方法之一。 这些方法创建使用标准交错,带状和打包样品模型的栅格实例,并且可以比通过组合外部生成的SampleModel和DataBuffer创建的栅格更有效地处理栅格。
-
-
Field Summary
Fields Modifier and Type Field 描述 protected DataBuffer
dataBuffer
DataBuffer存储图像数据。protected int
height
这个光栅的高度。protected int
minX
此栅格左上角像素的X坐标。protected int
minY
此光栅左上角像素的Y坐标。protected int
numBands
光栅中的乐队数。protected int
numDataElements
每像素DataBuffer数据元素的数量。protected Raster
parent
此栅格的父项,或null。protected SampleModel
sampleModel
SampleModel描述了这个栅格的像素如何存储在DataBuffer中。protected int
sampleModelTranslateX
从Raster的SampleModel的坐标空间到光栅的X平移。protected int
sampleModelTranslateY
从Raster的SampleModel的坐标空间到栅格的坐标空间的Y翻译。protected int
width
这个光栅的宽度。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
Raster(SampleModel sampleModel, DataBuffer dataBuffer, Point origin)
使用给定的SampleModel和DataBuffer构造光栅。protected
Raster(SampleModel sampleModel, DataBuffer dataBuffer, Rectangle aRegion, Point sampleModelTranslate, Raster parent)
使用给定的SampleModel,DataBuffer和父构造栅格。protected
Raster(SampleModel sampleModel, Point origin)
使用给定的SampleModel构造光栅。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 static WritableRaster
createBandedRaster(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point location)
基于具有指定数据类型,宽度,高度,扫描线步长,银行索引和带偏移的BandedSampleModel创建光栅。static WritableRaster
createBandedRaster(int dataType, int w, int h, int bands, Point location)
根据具有指定数据类型,宽度,高度和频带数的BandedSampleModel创建栅格。static WritableRaster
createBandedRaster(DataBuffer dataBuffer, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point location)
根据指定的DataBuffer,width,height,scanline stride,bank index和band offsets创建一个基于BandedSampleModel的光栅。Raster
createChild(int parentX, int parentY, int width, int height, int childMinX, int childMinY, int[] bandList)
返回一个新的Raster,它共享此Raster DataBuffer的全部或部分。WritableRaster
createCompatibleWritableRaster()
创建与此Raster相同大小的兼容WritableRaster,具有相同的SampleModel和新的已初始化的DataBuffer。WritableRaster
createCompatibleWritableRaster(int w, int h)
创建一个具有指定大小的兼容WritableRaster,一个新的SampleModel和一个新的初始化DataBuffer。WritableRaster
createCompatibleWritableRaster(int x, int y, int w, int h)
创建一个兼容的WritableRaster,具有指定的位置(minX,minY)和size(width,height),一个新的SampleModel和一个新的初始化的DataBuffer。WritableRaster
createCompatibleWritableRaster(Rectangle rect)
创建一个兼容的WritableRaster,它具有由rect指定的位置(minX,minY)和size(width,height),一个新的SampleModel和一个新的初始化的DataBuffer。static WritableRaster
createInterleavedRaster(int dataType, int w, int h, int scanlineStride, int pixelStride, int[] bandOffsets, Point location)
基于具有指定数据类型,宽度,高度,扫描线步长,像素步长和带偏移的PixelInterleavedSampleModel创建光栅。static WritableRaster
createInterleavedRaster(int dataType, int w, int h, int bands, Point location)
基于具有指定数据类型,宽度,高度和频带数的PixelInterleavedSampleModel创建光栅。static WritableRaster
createInterleavedRaster(DataBuffer dataBuffer, int w, int h, int scanlineStride, int pixelStride, int[] bandOffsets, Point location)
基于具有指定DataBuffer,宽度,高度,扫描线步长,像素步幅和带偏移的PixelInterleavedSampleModel创建光栅。static WritableRaster
createPackedRaster(int dataType, int w, int h, int[] bandMasks, Point location)
基于具有指定数据类型,宽度,高度和带屏蔽的SinglePixelPackedSampleModel创建光栅。static WritableRaster
createPackedRaster(int dataType, int w, int h, int bands, int bitsPerBand, Point location)
根据指定的数据类型,宽度,高度,频带数和每个频段的位数,打包SampleModel创建光栅。static WritableRaster
createPackedRaster(DataBuffer dataBuffer, int w, int h, int scanlineStride, int[] bandMasks, Point location)
基于具有指定DataBuffer,宽度,高度,扫描线步长和带屏蔽的SinglePixelPackedSampleModel创建光栅。static WritableRaster
createPackedRaster(DataBuffer dataBuffer, int w, int h, int bitsPerPixel, Point location)
基于具有指定DataBuffer,宽度,高度和每像素位数的MultiPixelPackedSampleModel创建光栅。static Raster
createRaster(SampleModel sm, DataBuffer db, Point location)
使用指定的SampleModel和DataBuffer创建光栅。Raster
createTranslatedChild(int childMinX, int childMinY)
创建一个具有相同大小的光栅,SampleModel和DataBuffer,但是具有不同的位置。static WritableRaster
createWritableRaster(SampleModel sm, DataBuffer db, Point location)
使用指定的SampleModel和DataBuffer创建WritableRaster。static WritableRaster
createWritableRaster(SampleModel sm, Point location)
使用指定的SampleModel创建WritableRaster。Rectangle
getBounds()
返回此栅格的边界矩形。DataBuffer
getDataBuffer()
返回与此栅格相关联的DataBuffer。Object
getDataElements(int x, int y, int w, int h, Object outData)
返回TransferType类型的原始数组中指定的像素矩形的像素数据。Object
getDataElements(int x, int y, Object outData)
返回TransferType类型的原始数组中单个像素的数据。int
getHeight()
返回栅格的高度(像素)。int
getMinX()
返回栅格的最小有效X坐标。int
getMinY()
返回栅格的最小有效Y坐标。int
getNumBands()
返回此光栅中的带数(每像素的样本数)。int
getNumDataElements()
返回通过getDataElements和setDataElements方法传输一个像素所需的数据元素数。Raster
getParent()
返回此栅格的父栅格(如果有)或null。double[]
getPixel(int x, int y, double[] dArray)
返回指定像素的double数组中的样本。float[]
getPixel(int x, int y, float[] fArray)
返回指定像素的float数组中的样本。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)
返回一个float数组,其中包含一个像素矩形的所有样本,每个数组元素一个样本。int[]
getPixels(int x, int y, int w, int h, int[] iArray)
返回一个包含矩形像素的所有样本的int数组,每个数组元素一个样本。int
getSample(int x, int y, int b)
将位于(x,y)处的像素的指定带中的样本返回为int。double
getSampleDouble(int x, int y, int b)
将位于(x,y)的像素的指定带中的样本返回为双倍。float
getSampleFloat(int x, int y, int b)
将位于(x,y)处的像素的指定带中的样本作为浮点返回。SampleModel
getSampleModel()
返回描述图像数据布局的SampleModel。int
getSampleModelTranslateX()
从SampleModel的坐标系返回到Raster的X转换。int
getSampleModelTranslateY()
从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数组中指定的像素矩形的指定带的样本,每个数组元素一个样本。int
getTransferType()
返回用于通过getDataElements和setDataElements方法传输像素的TransferType。int
getWidth()
返回栅格宽度(以像素为单位)。
-
-
-
字段详细信息
-
sampleModel
protected SampleModel sampleModel
SampleModel描述了这个栅格的像素如何存储在DataBuffer中。
-
dataBuffer
protected DataBuffer dataBuffer
DataBuffer存储图像数据。
-
minX
protected int minX
此栅格左上角像素的X坐标。
-
minY
protected int minY
此光栅左上角像素的Y坐标。
-
width
protected int width
这个光栅的宽度。
-
height
protected int height
这个光栅的高度。
-
sampleModelTranslateX
protected int sampleModelTranslateX
从Raster的SampleModel的坐标空间到光栅的X平移。
-
sampleModelTranslateY
protected int sampleModelTranslateY
从Raster的SampleModel的坐标空间到栅格的坐标空间的Y翻译。
-
numBands
protected int numBands
光栅中的乐队数。
-
numDataElements
protected int numDataElements
每像素DataBuffer数据元素的数量。
-
parent
protected Raster parent
此栅格的父项,或null。
-
-
构造方法详细信息
-
Raster
protected Raster(SampleModel sampleModel, Point origin)
使用给定的SampleModel构造光栅。 光栅的左上角是原点,它与SampleModel的大小相同。 自动创建一个足够大的描述光栅的DataBuffer。- 参数
-
sampleModel
- 指定布局的SampleModel -
origin
- 指定原点的点 - 异常
-
RasterFormatException
- 如果计算origin.x + sampleModel.getWidth()
或origin.y + sampleModel.getHeight()
导致整数溢出 -
NullPointerException
-sampleModel
或origin
为空
-
Raster
protected Raster(SampleModel sampleModel, DataBuffer dataBuffer, Point origin)
使用给定的SampleModel和DataBuffer构造光栅。 光栅的左上角是原点,它与SampleModel的大小相同。 DataBuffer未初始化,必须与SampleModel兼容。- 参数
-
sampleModel
- 指定布局的SampleModel -
dataBuffer
- 包含图像数据的DataBuffer -
origin
- 指定原点的点 - 异常
-
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到光栅坐标的转换的点 -
parent
- 此栅格的父(如果有) - 异常
-
NullPointerException
-如果任何sampleModel
,dataBuffer
,aRegion
或者sampleModelTranslate
为null -
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创建光栅。光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。 dataType参数应该是DataBuffer类中定义的枚举值之一。
请注意,不支持交织的
DataBuffer.TYPE_INT
。 要创建一个类型为DataBuffer.TYPE_INT
的1波段光栅,请使用Raster.createPackedRaster()。目前唯一支持的数据类型是TYPE_BYTE和TYPE_USHORT。
- 参数
-
dataType
- 存储样本的数据类型 -
w
- 图像数据的宽度(以像素为单位) -
h
- 图像数据的高度(像素) -
bands
- 乐队的数量 -
location
-Raster
- 结果
- 具有指定数据类型,宽度,高度和频带数的WritableRaster对象。
- 异常
-
RasterFormatException
- 如果w
或h
小于或等于零,或计算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推断出来。光栅的左上角由位置参数给出。 如果位置为空,则使用(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对象。
- 异常
-
RasterFormatException
- 如果w
或h
小于或等于零,或计算location.x + w
或location.y + h
导致整数溢出 -
IllegalArgumentException
- 如果dataType
不是支持的数据类型之一,即DataBuffer.TYPE_BYTE
或DataBuffer.TYPE_USHORT
。
-
createBandedRaster
public static WritableRaster createBandedRaster(int dataType, int w, int h, int bands, Point location)
根据具有指定数据类型,宽度,高度和频带数的BandedSampleModel创建栅格。光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。 dataType参数应该是DataBuffer类中定义的枚举值之一。
目前唯一支持的数据类型是TYPE_BYTE,TYPE_USHORT和TYPE_INT。
- 参数
-
dataType
- 存储样本的数据类型 -
w
- 图像数据的宽度(以像素为单位) -
h
- 图像数据的高度(像素) -
bands
- 乐队的数量 -
location
- 左上角的Raster
- 结果
- 具有指定数据类型,宽度,高度和频带数的WritableRaster对象。
- 异常
-
RasterFormatException
- 如果w
或h
小于或等于零,或计算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创建光栅。 band的数量是由bankIndices.length和bandOffsets.length推断的,它们必须相同。光栅的左上角由位置参数给出。 dataType参数应该是DataBuffer类中定义的枚举值之一。
目前唯一支持的数据类型是TYPE_BYTE,TYPE_USHORT和TYPE_INT。
- 参数
-
dataType
- 存储样本的数据类型 -
w
- 图像数据的宽度(以像素为单位) -
h
- 图像数据的高度(像素) -
scanlineStride
- 图像数据的行走 -
bankIndices
- 每个乐队的银行指数 -
bandOffsets
- 所有频段的偏移量 -
location
- 左上角的Raster
- 结果
- 具有指定数据类型,宽度,高度,扫描线步长,库索引和带偏移的WritableRaster对象。
- 异常
-
RasterFormatException
- 如果w
或h
小于或等于零,或计算location.x + w
或location.y + h
导致整数溢出 -
IllegalArgumentException
-如果dataType
是不支持的数据类型,这是一个DataBuffer.TYPE_BYTE
,DataBuffer.TYPE_USHORT
或DataBuffer.TYPE_INT
-
ArrayIndexOutOfBoundsException
- 如果bankIndices
或bandOffsets
是null
-
createPackedRaster
public static WritableRaster createPackedRaster(int dataType, int w, int h, int[] bandMasks, Point location)
基于具有指定数据类型,宽度,高度和带屏蔽的SinglePixelPackedSampleModel创建光栅。 频带的数量是从bandMasks.length推断出来的。光栅的左上角由位置参数给出。 如果位置为空,则使用(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创建光栅。 如果频带数为1,则SampleModel将为MultiPixelPackedSampleModel。如果频带数多于一个,则SampleModel将为SinglePixelPackedSampleModel,每个频带都具有位数位数。 在任何一种情况下,必须满足相应SampleModel对dataType和bitsPerBand的要求。
光栅的左上角由位置参数给出。 如果位置为空,则使用(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创建光栅。 频带数由bandOffsets.length推断出来。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。请注意,不支持交织的
DataBuffer.TYPE_INT
栅格。 要创建类型为DataBuffer.TYPE_INT
的1波段光栅,请使用Raster.createPackedRaster()。- 参数
-
dataBuffer
- 包含图像数据的DataBuffer
-
w
- 图像数据的宽度(以像素为单位) -
h
- 图像数据的高度(像素) -
scanlineStride
- 图像数据的行走 -
pixelStride
- 图像数据的像素步幅 -
bandOffsets
- 所有频带的偏移量 -
location
- 左上角的Raster
- 结果
-
具有指定的
DataBuffer
的WritableRaster对象,宽度,高度,扫描线步幅,像素步幅和带偏移。 - 异常
-
RasterFormatException
- 如果w
或h
小于或等于零,或计算location.x + w
或location.y + h
导致整数溢出 -
IllegalArgumentException
-如果dataType
是不支持的数据类型,这是一个DataBuffer.TYPE_BYTE
,DataBuffer.TYPE_USHORT
-
RasterFormatException
- 如果dataBuffer
有多个银行。 -
NullPointerException
- 如果dataBuffer
为空
-
createBandedRaster
public static WritableRaster createBandedRaster(DataBuffer dataBuffer, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point location)
根据指定的DataBuffer,width,height,scanline stride,bank index和band offsets创建一个基于BandedSampleModel的光栅。 band的数量是由bankIndices.length和bandOffsets.length推断的,它们必须相同。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。- 参数
-
dataBuffer
- 包含图像数据的DataBuffer
-
w
- 图像数据的宽度(以像素为单位) -
h
- 图像数据的高度(像素) -
scanlineStride
- 图像数据的行走 -
bankIndices
- 每个乐队的银行指数 -
bandOffsets
- 所有频段的偏移量 -
location
- 左上角的Raster
- 结果
-
具有指定的
DataBuffer
的WritableRaster对象,宽度,高度,扫描线步长,银行索引和带偏移。 - 异常
-
RasterFormatException
- 如果w
或h
小于或等于零,或计算location.x + w
或location.y + h
导致整数溢出 -
IllegalArgumentException
-如果dataType
是不支持的数据类型,这是一个DataBuffer.TYPE_BYTE
,DataBuffer.TYPE_USHORT
或DataBuffer.TYPE_INT
-
NullPointerException
- 如果dataBuffer
为空
-
createPackedRaster
public static WritableRaster createPackedRaster(DataBuffer dataBuffer, int w, int h, int scanlineStride, int[] bandMasks, Point location)
基于具有指定DataBuffer,宽度,高度,扫描线步长和带屏蔽的SinglePixelPackedSampleModel创建光栅。 频带的数量是从bandMasks.length推断出来的。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。- 参数
-
dataBuffer
- 包含图像数据的DataBuffer
-
w
- 图像数据的宽度(以像素为单位) -
h
- 图像数据的高度(像素) -
scanlineStride
- 图像数据的行走 -
bandMasks
- 一个包含每个频带条目的数组 -
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
为空
-
createPackedRaster
public static WritableRaster createPackedRaster(DataBuffer dataBuffer, int w, int h, int bitsPerPixel, Point location)
基于具有指定DataBuffer,宽度,高度和每像素位数的MultiPixelPackedSampleModel创建光栅。 光栅的左上角由位置参数给出。 如果位置为空,则使用(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
为空
-
createRaster
public static Raster createRaster(SampleModel sm, DataBuffer db, Point location)
使用指定的SampleModel和DataBuffer创建光栅。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。- 参数
-
sm
- 指定的SampleModel
-
db
- 指定的DataBuffer
-
location
- 左上角的Raster
- 结果
-
一个
Raster
具有指定SampleModel
,DataBuffer
,和位置。 - 异常
-
RasterFormatException
- 如果计算location.x + sm.getWidth()
或location.y + sm.getHeight()
导致整数溢出 -
RasterFormatException
- 如果db
有多个银行,而sm
是PixelInterleavedSampleModel,SinglePixelPackedSampleModel或MultiPixelPackedSampleModel。 -
NullPointerException
- 如果SampleModel或DataBuffer为null
-
createWritableRaster
public static WritableRaster createWritableRaster(SampleModel sm, Point location)
使用指定的SampleModel创建WritableRaster。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。- 参数
-
sm
- 指定的SampleModel
-
location
-WritableRaster
- 结果
-
一个
WritableRaster
与指定的SampleModel
和位置。 - 异常
-
RasterFormatException
- 如果计算location.x + sm.getWidth()
或location.y + sm.getHeight()
导致整数溢出
-
createWritableRaster
public static WritableRaster createWritableRaster(SampleModel sm, DataBuffer db, Point location)
使用指定的SampleModel和DataBuffer创建WritableRaster。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。- 参数
-
sm
- 指定的SampleModel
-
db
- 指定的DataBuffer
-
location
-WritableRaster
- 结果
-
一个
WritableRaster
具有指定SampleModel
,DataBuffer
,和位置。 - 异常
-
RasterFormatException
- 如果计算location.x + sm.getWidth()
或location.y + sm.getHeight()
导致整数溢出 -
RasterFormatException
- 如果db
有多个银行,而sm
是PixelInterleavedSampleModel,SinglePixelPackedSampleModel或MultiPixelPackedSampleModel。 -
NullPointerException
- 如果SampleModel或DataBuffer为null
-
getParent
public Raster getParent()
返回此栅格的父栅格(如果有)或null。- 结果
-
父
null
或null
。
-
getSampleModelTranslateX
public final int getSampleModelTranslateX()
从SampleModel的坐标系返回到Raster的X转换。 要将像素的X坐标从光栅坐标系转换为SampleModel坐标系,必须减去此值。- 结果
- 从Raster的SampleModel的坐标空间到光栅的X平移。
-
getSampleModelTranslateY
public final int getSampleModelTranslateY()
从SampleModel的坐标系返回到Raster的Y转换。 要将像素的Y坐标从光栅坐标系转换为SampleModel坐标系,必须减去此值。- 结果
- 从Raster的SampleModel的坐标空间到Raster的坐标空间的Y翻译。
-
createCompatibleWritableRaster
public WritableRaster createCompatibleWritableRaster()
创建与此Raster相同大小的兼容WritableRaster,具有相同的SampleModel和新的已初始化的DataBuffer。- 结果
-
兼容的
WritableRaster
具有相同的样本模型和新的数据缓冲区。
-
createCompatibleWritableRaster
public WritableRaster createCompatibleWritableRaster(int w, int h)
创建一个具有指定大小的兼容WritableRaster,一个新的SampleModel和一个新的初始化DataBuffer。- 参数
-
w
- 新的WritableRaster
的指定宽度 -
h
- 新的WritableRaster
的指定高度 - 结果
-
具有指定大小的兼容的
WritableRaster
和新的样本模型和数据缓冲区。 - 异常
-
RasterFormatException
- 如果宽度或高度小于或等于零。
-
createCompatibleWritableRaster
public WritableRaster createCompatibleWritableRaster(Rectangle rect)
创建一个兼容的WritableRaster,它具有由rect指定的位置(minX,minY)和size(width,height),一个新的SampleModel和一个新的初始化的DataBuffer。- 参数
-
rect
- 一个规定Rectangle
的大小和位置的WritableRaster
- 结果
-
具有指定大小和位置的兼容的
WritableRaster
和新的样本模型和数据缓冲区。 - 异常
-
RasterFormatException
- 如果rect
宽度或高度小于或等于零,或计算rect.x + rect.width
或rect.y + rect.height
导致整数溢出 -
NullPointerException
- 如果rect
为空
-
createCompatibleWritableRaster
public WritableRaster createCompatibleWritableRaster(int x, int y, int w, int h)
创建一个兼容的WritableRaster,具有指定的位置(minX,minY)和size(width,height),一个新的SampleModel和一个新的初始化的DataBuffer。- 参数
-
x
-在X中的左上角坐标WritableRaster
-
y
-的Y的左上角坐标WritableRaster
-
w
- 指定的宽度为WritableRaster
-
h
- 指定的高度为WritableRaster
- 结果
-
具有指定大小和位置的兼容的
WritableRaster
和新的样本模型和数据缓冲区。 - 异常
-
RasterFormatException
- 如果w
或h
小于或等于零,或计算x + w
或y + h
导致整数溢出
-
createTranslatedChild
public Raster createTranslatedChild(int childMinX, int childMinY)
创建一个具有相同大小的光栅,SampleModel和DataBuffer,但是具有不同的位置。 新的光栅将具有对当前光栅的引用,可通过其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的全部或部分。 新的光栅将具有对当前光栅的引用,可通过其getParent()方法访问。parentX,parentY,width和height参数在此栅格坐标空间中形成一个Rectangle,指示要共享的像素面积。 如果此Rectangle不包含当前栅格的边界,将抛出一个错误。
新的光栅可以另外被转换为与当前光栅所使用的平面不同的坐标系。 childMinX和childMinY参数给出返回的Raster的左上角像素的新(x,y)坐标; 新栅格中的坐标(childMinX,childMinY)将映射到与当前栅格中的坐标(parentX,parentY)相同的像素。
新的栅格可以被定义为仅通过bandList参数仅包含当前栅格的可能重新排序的波段的子集。 如果bandList为null,则将其当前顺序包括当前栅格的所有频带。
要创建一个包含当前栅格的子区域的新栅格,但共享其坐标系和带,则该方法应该调用childMinX等于parentX,childMinY等于parentY,bandList等于null。
- 参数
-
parentX
- 此栅格坐标中左上角的X坐标 -
parentY
- 此栅格坐标中左上角的Y坐标 -
width
- 从(parentX,parentY)开始的区域的宽度 -
height
- 从(parentX,parentY)开始的区域的高度。 -
childMinX
- 返回光栅左上角的X坐标 -
childMinY
- 返回光栅左上角的Y坐标 -
bandList
- 频带索引的数组,或为空使用所有频带 - 结果
-
一个新的
Raster
。 - 异常
-
RasterFormatException
- 如果指定的子区域在栅格边界之外。 -
RasterFormatException
-如果width
或height
小于或等于0,或者计算任何的parentX + width
,parentY + height
,childMinX + width
,或childMinY + height
导致整数溢出
-
getBounds
public Rectangle getBounds()
返回此栅格的边界矩形。 此函数返回与getMinX / MinY / Width / Height相同的信息。- 结果
-
这个
Raster
的边框。
-
getMinX
public final int getMinX()
返回栅格的最小有效X坐标。- 结果
-
这个
Raster
的最小x坐标。
-
getMinY
public final int getMinY()
返回栅格的最小有效Y坐标。- 结果
-
这个
Raster
的最小y坐标。
-
getWidth
public final int getWidth()
返回栅格宽度(以像素为单位)。- 结果
-
该宽度为
Raster
。
-
getHeight
public final int getHeight()
返回栅格的高度(像素)。- 结果
-
这个高度这个
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
public DataBuffer getDataBuffer()
返回与此栅格相关联的DataBuffer。- 结果
-
该
DataBuffer
的Raster
。
-
getSampleModel
public SampleModel getSampleModel()
返回描述图像数据布局的SampleModel。- 结果
-
该
SampleModel
的这个Raster
。
-
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。 但是,显式边界检查不能保证。 如果输入对象为非空,则引用ClassCastException,并引用除TransferType数组以外的任何内容。- 参数
-
x
- 像素位置的X坐标 -
y
- 像素位置的Y坐标 -
outData
- 由getTransferType()和length getNumDataElements()定义的类型数组的对象引用。 如果为null,则将分配适当类型和大小的数组 - 结果
- 由getTransferType()与请求的像素数据定义的类型的数组的对象引用。
- 异常
-
ArrayIndexOutOfBoundsException
- 如果坐标不是边界,或者outData太小,不能容纳输出。 - 另请参见:
-
SampleModel.getDataElements(int, int, Object, DataBuffer)
-
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。 但是,显式边界检查不能保证。 如果输入对象为非空,则引用ClassCastException,并引用除TransferType数组以外的任何内容。- 参数
-
x
- 左上角像素位置的X坐标 -
y
- 左上角像素位置的Y坐标 -
w
- 像素矩形的宽度 -
h
- 像素矩形的高度 -
outData
- 由getTransferType()和length w * h * getNumDataElements()定义的类型的数组的对象引用。 如果为null,则将分配适当类型和大小的数组。 - 结果
- 由getTransferType()与请求的像素数据定义的类型的数组的对象引用。
- 异常
-
ArrayIndexOutOfBoundsException
- 如果坐标不在边界,或者outData太小,不能容纳输出。 - 另请参见:
-
SampleModel.getDataElements(int, int, int, int, Object, DataBuffer)
-
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
- 可选的预分配浮点数组 - 结果
- 指定像素的样本。
- 异常
-
ArrayIndexOutOfBoundsException
- 如果坐标不在边界,或者如果fArray太小,不能容纳输出。
-
getPixel
public double[] getPixel(int x, int y, double[] dArray)
返回指定像素的double数组中的样本。 如果坐标不在边界内,则可能抛出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)
返回一个float数组,其中包含一个像素矩形的所有样本,每个数组元素一个样本。 如果坐标不在边界内,则可能抛出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)
将位于(x,y)处的像素的指定带中的样本返回为int。 如果坐标不在边界内,则可能抛出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太小而不能保存输出。
-
-