- java.lang.Object
-
- java.awt.image.SampleModel
-
- java.awt.image.SinglePixelPackedSampleModel
-
public class SinglePixelPackedSampleModel extends SampleModel
该类表示打包的像素数据,使得构成单个像素的N个样本存储在单个数据阵列元素中,并且每个数据数据阵列元素仅保存一个像素的样本。 该类支持TYPE_BYTE
,TYPE_USHORT
,TYPE_INT
数据类型。 所有数据数组元素都驻留在DataBuffer的第一个库中。 提供了访问器方法,以便可以直接操作图像数据。 扫描线步幅是给定样本与下一扫描线的同一列中的相应样本之间的数据阵列元素的数量。 位掩码是提取表示像素带的样本所需的掩码。 位偏移是表示像素频带的样本的数据阵列元素中的位偏移。以下代码说明从DataBuffer
data
提取表示像素x,y
波段b
的样本位:int sample = data.getElem(y * scanlineStride + x); sample = (sample & bitMasks[b]) >>> bitOffsets[b];
-
-
字段汇总
-
声明的属性在类 java.awt.image.SampleModel
dataType, height, numBands, width
-
-
构造方法摘要
构造方法 构造器 描述 SinglePixelPackedSampleModel(int dataType, int w, int h, int[] bitMasks)
使用bitMasks.length波段构造SinglePixelPackedSampleModel。SinglePixelPackedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bitMasks)
构造具有bitMasks.length波段和扫描线步长等于scanlineStride数据数组元素的SinglePixelPackedSampleModel。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 SampleModel
createCompatibleSampleModel(int w, int h)
创建具有指定宽度和高度的新SinglePixelPackedSampleModel。DataBuffer
createDataBuffer()
创建与此SinglePixelPackedSampleModel对应的DataBuffer。SampleModel
createSubsetSampleModel(int[] bands)
这将创建一个新的SinglePixelPackedSampleModel,其中包含此SinglePixelPackedSampleModel的波段子集。int[]
getBitMasks()
返回所有band的位掩码。int[]
getBitOffsets()
将位偏移返回到表示所有频带的像素的数据数组元素中。Object
getDataElements(int x, int y, Object obj, DataBuffer data)
返回TransferType类型的基本数组中单个像素的数据。int
getNumDataElements()
返回通过getDataElements和setDataElements方法传输一个像素所需的数据元素数。int
getOffset(int x, int y)
返回像素(x,y)的偏移量(在数据数组元素中)。int[]
getPixel(int x, int y, int[] iArray, DataBuffer data)
返回int数组中指定像素的所有样本。int[]
getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
返回int数组中指定矩形像素的所有样本,每个数组元素一个样本。int
getSample(int x, int y, int b, DataBuffer data)
对于位于(x,y)的像素,在指定band中的样本返回int。int[]
getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
返回int数组中指定矩形像素的指定band的样本,每个数组元素一个样本。int[]
getSampleSize()
返回所有band的每个样本的位数。int
getSampleSize(int band)
返回指定band的每个样本的位数。int
getScanlineStride()
返回此SinglePixelPackedSampleModel的扫描行间距。void
setDataElements(int x, int y, Object obj, DataBuffer data)
从TransferType类型的基本数组中设置指定DataBuffer中单个像素的数据。void
setPixel(int x, int y, int[] iArray, DataBuffer data)
使用int数组样本设置DataBuffer中的像素以进行输入。void
setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
为每个数组元素包含一个样本的int数组设置像素矩形的所有样本。void
setSample(int x, int y, int b, int s, DataBuffer data)
使用int作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。void
setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
从包含每个数组元素一个样本的int数组中为指定的像素矩形设置指定band中的样本。-
声明方法的类 java.awt.image.SampleModel
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSample, setSample, setSamples, setSamples
-
-
-
-
构造方法详细信息
-
SinglePixelPackedSampleModel
public SinglePixelPackedSampleModel(int dataType, int w, int h, int[] bitMasks)
使用bitMasks.length波段构造SinglePixelPackedSampleModel。 每个样本存储在数据数组元素中相应位掩码的位置。 每个位掩码必须是连续的,并且掩码不能重叠。 超出数据类型容量的位掩码将被截断。- 参数
-
dataType
- 用于存储样本的数据类型。 -
w
- 所述图像数据区域的宽度(以像素为单位)。 -
h
- 所描述的图像数据的区域的高度(以像素为单位)。 -
bitMasks
- 所有波段的位掩码。 - 异常
-
IllegalArgumentException
-如果dataType
不是非此即彼DataBuffer.TYPE_BYTE
,DataBuffer.TYPE_USHORT
,或DataBuffer.TYPE_INT
-
SinglePixelPackedSampleModel
public SinglePixelPackedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bitMasks)
构造具有bitMasks.length波段和扫描线步长等于scanlineStride数据数组元素的SinglePixelPackedSampleModel。 每个样本存储在数据数组元素中相应位掩码的位置。 每个位掩码必须是连续的,并且掩码不能重叠。 超出数据类型容量的位掩码将被截断。- 参数
-
dataType
- 用于存储样本的数据类型。 -
w
- 描述的图像数据区域的宽度(以像素为单位)。 -
h
- 所描述的图像数据区域的高度(以像素为单位)。 -
scanlineStride
- 图像数据的行scanlineStride
。 -
bitMasks
- 所有波段的位掩码。 - 异常
-
IllegalArgumentException
- 如果w
或h
不大于0 -
IllegalArgumentException
-如果在任何掩模bitMask
不是连续的 -
IllegalArgumentException
-如果dataType
不是非此即彼DataBuffer.TYPE_BYTE
,DataBuffer.TYPE_USHORT
,或DataBuffer.TYPE_INT
-
-
方法详细信息
-
getNumDataElements
public int getNumDataElements()
返回通过getDataElements和setDataElements方法传输一个像素所需的数据元素数。 对于SinglePixelPackedSampleModel,这是一个。- Specified by:
-
getNumDataElements
在类SampleModel
- 结果
- 数据元素的数量。
- 另请参见:
-
SampleModel.getDataElements(int, int, Object, DataBuffer)
,SampleModel.getDataElements(int, int, int, int, Object, DataBuffer)
,SampleModel.setDataElements(int, int, Object, DataBuffer)
,SampleModel.setDataElements(int, int, int, int, Object, DataBuffer)
,SampleModel.getTransferType()
-
createCompatibleSampleModel
public SampleModel createCompatibleSampleModel(int w, int h)
创建具有指定宽度和高度的新SinglePixelPackedSampleModel。 新的SinglePixelPackedSampleModel将具有与此SinglePixelPackedSampleModel相同的存储数据类型和位掩码。- Specified by:
-
createCompatibleSampleModel
类SampleModel
- 参数
-
w
- 生成的宽度SampleModel
-
h
- 结果SampleModel
的高度 - 结果
-
a
SinglePixelPackedSampleModel
具有指定的宽度和高度。 - 异常
-
IllegalArgumentException
- 如果w
或h
不大于0
-
createDataBuffer
public DataBuffer createDataBuffer()
创建与此SinglePixelPackedSampleModel对应的DataBuffer。 DataBuffer的数据类型和大小将与此SinglePixelPackedSampleModel一致。 DataBuffer将拥有一个银行。- Specified by:
-
createDataBuffer
类SampleModel
- 结果
-
DataBuffer
对应于这个SampleModel
。
-
getSampleSize
public int[] getSampleSize()
返回所有band的每个样本的位数。- Specified by:
-
getSampleSize
在类SampleModel
- 结果
- 所有波段的样本大小。
-
getSampleSize
public int getSampleSize(int band)
返回指定band的每个样本的位数。- Specified by:
-
getSampleSize
在类SampleModel
- 参数
-
band
- 指定的波段 - 结果
- 指定波段的样本大小。
-
getOffset
public int getOffset(int x, int y)
返回像素(x,y)的偏移量(在数据数组元素中)。 包含像素x,y
的数据元素可以从具有SinglePixelPackedSampleModelsppsm
的DataBufferdata
检索为:data.getElem(sppsm.getOffset(x, y));
- 参数
-
x
- 指定像素的X坐标 -
y
- 指定像素的Y坐标 - 结果
- 指定像素的偏移量。
-
getBitOffsets
public int[] getBitOffsets()
将位偏移返回到表示所有频带的像素的数据数组元素中。- 结果
- 表示所有频带的像素的位偏移。
-
getBitMasks
public int[] getBitMasks()
返回所有band的位掩码。- 结果
- 所有波段的位掩码。
-
getScanlineStride
public int getScanlineStride()
返回此SinglePixelPackedSampleModel的扫描行间距。- 结果
-
这个
SinglePixelPackedSampleModel
的扫描线大步。
-
createSubsetSampleModel
public SampleModel createSubsetSampleModel(int[] bands)
这将创建一个新的SinglePixelPackedSampleModel,其中包含此SinglePixelPackedSampleModel的波段子集。 新的SinglePixelPackedSampleModel可以与现有SinglePixelPackedSampleModel可以使用的任何DataBuffer一起使用。 新的SinglePixelPackedSampleModel / DataBuffer组合将表示具有原始SinglePixelPackedSampleModel / DataBuffer组合的波段子集的图像。- Specified by:
-
createSubsetSampleModel
类SampleModel
- 参数
-
bands
- 这个SampleModel
的频段子集 - 结果
-
带有
SampleModel
频段子集的SampleModel
。 - 异常
-
RasterFormatException
- 如果band参数的长度大于样本模型中的band数。
-
getDataElements
public Object getDataElements(int x, int y, Object obj, DataBuffer data)
返回TransferType类型的基本数组中单个像素的数据。 对于SinglePixelPackedSampleModel,该数组将具有一个元素,并且该类型将与存储数据类型相同。 通常,obj应该作为null传递,以便Object将自动创建并且将具有正确的原始数据类型。以下代码示出了将一个像素的数据从DataBuffer
db1
(其存储布局由SinglePixelPackedSampleModelsppsm1
描述)sppsm1
到DataBufferdb2
,其存储布局由SinglePixelPackedSampleModelsppsm2sppsm2
。 传输通常比使用getPixel / setPixel更有效。SinglePixelPackedSampleModel sppsm1, sppsm2; DataBufferInt db1, db2; sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null, db1), db2);
如果SampleModels具有相同数量的band,相应的band具有相同的每个样本位数,并且TransferTypes相同,则使用getDataElements / setDataElements在两个DataBuffer / SampleModel对之间进行传输是合法的。如果obj为非null,则它应该是TransferType类型的基本数组。 否则,抛出ClassCastException。 如果坐标不在边界内,或者如果obj非空并且不足以容纳像素数据,则可能抛出ArrayIndexOutOfBoundsException。
- Specified by:
-
getDataElements
类SampleModel
- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
obj
- 如果为非null,则返回像素数据的基本数组。 -
data
- 包含图像数据的DataBuffer。 - 结果
- 指定像素的数据。
- 另请参见:
-
setDataElements(int, int, Object, DataBuffer)
-
getPixel
public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
返回int数组中指定像素的所有样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getPixel
类SampleModel
- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
iArray
- 如果为非null,则返回此数组中的样本 -
data
- 包含图像数据的DataBuffer。 - 结果
- 指定像素的所有样本。
- 另请参见:
-
setPixel(int, int, int[], DataBuffer)
-
getPixels
public int[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
返回int数组中指定矩形像素的所有样本,每个数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getPixels
在类SampleModel
- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
iArray
- 如果为非null,则返回此数组中的样本。 -
data
- 包含图像数据的DataBuffer。 - 结果
- 指定像素区域的所有样本。
- 另请参见:
-
setPixels(int, int, int, int, int[], DataBuffer)
-
getSample
public int getSample(int x, int y, int b, DataBuffer data)
对于位于(x,y)的像素,在指定band中的样本返回int。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- Specified by:
-
getSample
在类SampleModel
- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
b
- 乐队返回。 -
data
- 包含图像数据的DataBuffer。 - 结果
- 指定像素中指定像素的样本。
- 另请参见:
-
setSample(int, int, int, int, DataBuffer)
-
getSamples
public int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
返回int数组中指定矩形像素的指定band的样本,每个数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getSamples
在类SampleModel
- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
b
- 乐队返回。 -
iArray
- 如果为非null,则返回此数组中的样本。 -
data
- 包含图像数据的DataBuffer。 - 结果
- 指定像素区域的指定波段的样本。
- 另请参见:
-
setSamples(int, int, int, int, int, int[], DataBuffer)
-
setDataElements
public void setDataElements(int x, int y, Object obj, DataBuffer data)
从TransferType类型的基本数组中设置指定DataBuffer中单个像素的数据。 对于SinglePixelPackedSampleModel,只有数组的第一个元素将保存有效数据,并且数组的类型必须与SinglePixelPackedSampleModel的存储数据类型相同。以下代码示出了将一个像素的数据从DataBuffer
db1
(其存储布局由SinglePixelPackedSampleModelsppsm1描述)sppsm1
到DataBufferdb2
,其存储布局由SinglePixelPackedSampleModelsppsm2sppsm2
。 传输通常比使用getPixel / setPixel更有效。SinglePixelPackedSampleModel sppsm1, sppsm2; DataBufferInt db1, db2; sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null, db1), db2);
如果SampleModels具有相同数量的band,相应的band具有相同的每个样本位数,并且TransferTypes相同,则使用getDataElements / setDataElements在两个DataBuffer / SampleModel对之间进行传输是合法的。obj必须是TransferType类型的原始数组。 否则,抛出ClassCastException。 如果坐标不在边界内,或者obj不足以容纳像素数据,则可能抛出ArrayIndexOutOfBoundsException。
- Specified by:
-
setDataElements
类SampleModel
- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
obj
- 包含像素数据的原始数组。 -
data
- 包含图像数据的DataBuffer。 - 另请参见:
-
getDataElements(int, int, Object, DataBuffer)
-
setPixel
public void setPixel(int x, int y, int[] iArray, DataBuffer data)
使用int数组样本设置DataBuffer中的像素以进行输入。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setPixel
在类SampleModel
- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
iArray
- int数组中的输入样本。 -
data
- 包含图像数据的DataBuffer。 - 另请参见:
-
getPixel(int, int, int[], DataBuffer)
-
setPixels
public void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
为每个数组元素包含一个样本的int数组设置像素矩形的所有样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setPixels
在类SampleModel
- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
iArray
- int数组中的输入样本。 -
data
- 包含图像数据的DataBuffer。 - 另请参见:
-
getPixels(int, int, int, int, int[], DataBuffer)
-
setSample
public void setSample(int x, int y, int b, int s, DataBuffer data)
使用int作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- Specified by:
-
setSample
类SampleModel
- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
b
- 要设置的乐队。 -
s
- 输入样本为int。 -
data
- 包含图像数据的DataBuffer。 - 另请参见:
-
getSample(int, int, int, DataBuffer)
-
setSamples
public void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
从包含每个数组元素一个样本的int数组中为指定的像素矩形设置指定band中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setSamples
类SampleModel
- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
b
- 要设置的乐队。 -
iArray
- int数组中的输入样本。 -
data
- 包含图像数据的DataBuffer。 - 另请参见:
-
getSamples(int, int, int, int, int, int[], DataBuffer)
-
-