- 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
提取表示b
的像素x,y
的样本的比特:int sample = data.getElem(y * scanlineStride + x); sample = (sample & bitMasks[b]) >>> bitOffsets[b];
-
-
Field Summary
-
Fields inherited from class java.awt.image.SampleModel
dataType, height, numBands, width
-
-
构造方法摘要
构造方法 Constructor 描述 SinglePixelPackedSampleModel(int dataType, int w, int h, int[] bitMasks)
构造一个具有bitMasks.length带的SinglePixelPackedSampleModel。SinglePixelPackedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bitMasks)
构造一个SinglePixelPackedSampleModel,其bitMasks.length带和扫描线步长等于scanlineStride数据数组元素。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 SampleModel
createCompatibleSampleModel(int w, int h)
创建一个具有指定宽度和高度的新SinglePixelPackedSampleModel。DataBuffer
createDataBuffer()
创建与此SinglePixelPackedSampleModel对应的DataBuffer。SampleModel
createSubsetSampleModel(int[] bands)
这将创建一个新的SinglePixelPackedSampleModel与该SinglePixelPackedSampleModel的频带的子集。boolean
equals(Object o)
指示一些其他对象是否等于此。int[]
getBitMasks()
返回所有频段的位掩码。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)处的像素的指定带中的样本int。int[]
getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
返回int数组中指定的像素矩形的指定带的样本,每个数组元素一个样本。int[]
getSampleSize()
返回所有频带的每个样本的位数。int
getSampleSize(int band)
返回指定频带的每个样本的位数。int
getScanlineStride()
返回此SinglePixelPackedSampleModel的扫描线步幅。int
hashCode()
返回对象的哈希码值。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)处的像素的指定波段设置一个样本。void
setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
从包含每个数组元素一个样本的int数组中为指定的像素矩形设置指定带中的样本。-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from class 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)
构造一个SinglePixelPackedSampleModel,其bitMasks.length带和扫描线步长等于scanlineStride数据数组元素。 每个样本存储在数据数组元素中位于其相应位掩码的位置。 每个位掩码必须是连续的,掩码不能重叠。 超过数据类型容量的位掩码将被截断。- 参数
-
dataType
- 存储样品的数据类型。 -
w
- 描述的图像数据区域的宽度(以像素为单位)。 -
h
- 描述的图像数据区域的高度(以像素为单位)。 -
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
的高度 - 结果
-
一个
SinglePixelPackedSampleModel
具有指定的宽度和高度。 - 异常
-
IllegalArgumentException
- 如果w
或h
不大于0
-
createDataBuffer
public DataBuffer createDataBuffer()
创建与此SinglePixelPackedSampleModel对应的DataBuffer。 DataBuffer的数据类型和大小将与此SinglePixelPackedSampleModel一致。 DataBuffer将有一个单独的银行。- Specified by:
-
createDataBuffer
在SampleModel
- 结果
-
一个
DataBuffer
对应这个SampleModel
。
-
getSampleSize
public int[] getSampleSize()
返回所有频带的每个样本的位数。- Specified by:
-
getSampleSize
在SampleModel
- 结果
- 所有频段的样本大小。
-
getSampleSize
public int getSampleSize(int band)
返回指定频带的每个样本的位数。- Specified by:
-
getSampleSize
在SampleModel
- 参数
-
band
- 指定的乐队 - 结果
- 指定频段样本的大小。
-
getOffset
public int getOffset(int x, int y)
返回像素(x,y)的偏移(在数据数组元素中)。 可以使用SinglePixelPackedSampleModelsppsm
从DataBufferdata
检索包含像素x,y
的数据元素:data.getElem(sppsm.getOffset(x, y));
- 参数
-
x
- 指定像素的X坐标 -
y
- 指定像素的Y坐标 - 结果
- 指定像素的偏移量。
-
getBitOffsets
public int[] getBitOffsets()
将位偏移返回到表示所有频带的像素的数据数组元素中。- 结果
- 位偏移表示所有频带的像素。
-
getBitMasks
public int[] getBitMasks()
返回所有频段的位掩码。- 结果
- 所有乐队的位掩码。
-
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
- 如果频带参数的长度大于样本模型中的频带数。
-
getDataElements
public Object getDataElements(int x, int y, Object obj, DataBuffer data)
返回TransferType类型的原始数组中单个像素的数据。 对于SinglePixelPackedSampleModel,该数组将具有一个元素,该类型将与存储数据类型相同。 一般来说,obj应该以null的形式传入,这样Object将被自动创建,并且将是正确的原始数据类型。下面的代码说明从DataBuffer中为一个像素的数据
db1
,其存储布局由SinglePixelPackedSampleModel,它描述sppsm1
到DataBufferdb2
,其存储布局由SinglePixelPackedSampleModel,它描述sppsm2
。 传输通常比使用getPixel / setPixel更有效率。SinglePixelPackedSampleModel sppsm1, sppsm2; DataBufferInt db1, db2; sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null, db1), db2);
如果SampleModels具有相同数量的频带,则使用getDataElements / setDataElements在两个DataBuffer / SampleModel对之间传输是合法的,相应的频带具有与每个样本相同的位数,TransferTypes是相同的。如果obj不为空,则它应该是TransferType类型的原始数组。 否则,抛出ClassCastException。 如果坐标不在边界中,或者如果obj不为空且不够大以容纳像素数据,则可能抛出ArrayIndexOutOfBoundsException。
- Specified by:
-
getDataElements
在SampleModel
- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
obj
- 如果非空,则返回像素数据的原始数组。 -
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
- 如果非空,则返回此数组中的样本 -
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
- 如果非空,则返回此数组中的样本。 -
data
- 包含图像数据的DataBuffer。 - 结果
- 指定像素区域的所有样本。
- 另请参见:
-
setPixels(int, int, int, int, int[], DataBuffer)
-
getSample
public int getSample(int x, int y, int b, DataBuffer data)
返回为位于(x,y)处的像素的指定带中的样本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数组中指定的像素矩形的指定带的样本,每个数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
getSamples
在类SampleModel
- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
b
- 乐队返回。 -
iArray
- 如果非空,则返回此数组中的样本。 -
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
,其存储布局由SinglePixelPackedSampleModel,它描述sppsm1
到DataBufferdb2
,其存储布局由SinglePixelPackedSampleModel,它描述sppsm2
。 传输通常比使用getPixel / setPixel更有效率。SinglePixelPackedSampleModel sppsm1, sppsm2; DataBufferInt db1, db2; sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null, db1), db2);
如果SampleModels具有相同数量的频带,则使用getDataElements / setDataElements在两个DataBuffer / SampleModel对之间传输是合法的,相应的频带具有与每个样本相同的位数,TransferTypes是相同的。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)处的像素的指定波段设置一个样本。 如果坐标不在边界内,则可能抛出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数组中为指定的像素矩形设置指定带中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。- 重写:
-
setSamples
在SampleModel
- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
b
- 乐队设置。 -
iArray
- int数组中的输入样本。 -
data
- 包含图像数据的DataBuffer。 - 另请参见:
-
getSamples(int, int, int, int, int, int[], DataBuffer)
-
equals
public boolean equals(Object o)
描述从类别复制Object
指示一些其他对象是否等于此。equals
方法在非空对象引用上实现等价关系:- 自反性 :对于任何非空的参考值
x
,x.equals(x)
应该返回true
。 - 它是对称的 :对于任何非空引用值
x
和y
,x.equals(y)
应该返回true
当且仅当y.equals(x)
回报true
。 - 传递性 :对于任何非空引用值
x
,y
,并z
,如果x.equals(y)
回报true
和y.equals(z)
回报true
,然后x.equals(z)
应该返回true
。 - 一致 :对于任何非空参考值
x
和y
,多重调用x.equals(y)
始终返回true
或一致返回false
,前提是在equals
对对象使用的信息进行了修改。 - 对于任何非空的参考值
x
,x.equals(null)
应该返回false
。
该
equals
类方法Object
实现对象上差别可能性最大的相等关系; 也就是说,对于任何非空参考值x
和y
,当且仅当x
和y
引用相同对象(x == y
具有值true
)时,该方法返回true
。请注意,无论何时覆盖此方法,通常需要覆盖
hashCode
方法,以便维护hashCode
方法的通用合同,该方法规定相等的对象必须具有相等的哈希码。- 重写:
-
equals
在Object
- 参数
-
o
- 与之比较的参考对象。 - 结果
-
true
如果此对象与obj参数相同;false
否则。 - 另请参见:
-
Object.hashCode()
,HashMap
- 自反性 :对于任何非空的参考值
-
hashCode
public int hashCode()
描述从类别复制Object
返回对象的哈希码值。 支持这种方法是为了散列表的利益,如HashMap
提供的那样 。hashCode
的总合同是:- 无论何时在执行Java应用程序时多次调用同一对象,
hashCode
方法必须始终返回相同的整数,前提是修改了对象中equals
比较中的信息。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。 - 如果两个对象根据
equals(Object)
方法相等,则在两个对象中的每一个上调用hashCode
方法必须产生相同的整数结果。 - 不要求如果两个对象根据
Object.equals(java.lang.Object)
方法不相等,那么在两个对象中的每个对象上调用hashCode
方法必须产生不同的整数结果。 但是,程序员应该意识到,为不等对象生成不同的整数结果可能会提高哈希表的性能。
尽可能多的合理实用,由类
Object
定义的hashCode方法确实为不同对象返回不同的整数。 (在某个时间点,hashCode可能或可能不被实现为对象的存储器地址的某些功能。)- 重写:
-
hashCode
在Object
- 结果
- 该对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
- 无论何时在执行Java应用程序时多次调用同一对象,
-
-