public class MultiPixelPackedSampleModel extends SampleModel
MultiPixelPackedSampleModel类表示单带图像,可以将多个单样本像素包装到一个数据元素中。
像素不允许跨数据元素。
数据类型可以是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT。
每个像素必须是2个位数的幂,2个像素的数量必须恰好适合于一个数据元素。
像素位步长等于每像素的位数。
扫描线步幅在数据元素中,最后几个数据元素可能用未使用的像素填充。
数据位偏移是从DataBuffer 开始到第一个像素的位偏移量,必须是像素位数的倍数。
下面的代码说明提取用于像素的位x, y从DataBuffer data和存储在类型的数据元素的像素数据dataType :
int dataElementSize = DataBuffer.getDataTypeSize(dataType); int bitnum = dataBitOffset + x*pixelBitStride; int element = data.getElem(y*scanlineStride + bitnum/dataElementSize); int shift = dataElementSize - (bitnum & (dataElementSize-1)) - pixelBitStride; int pixel = (element >> shift) & ((1 << pixelBitStride) - 1);
dataType, height, numBands, width| Constructor and Description |
|---|
MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits)
构造具有
MultiPixelPackedSampleModel数据类型,宽度,高度和每像素位数的MultiPixelPackedSampleModel。
|
MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits, int scanlineStride, int dataBitOffset)
构造一个
MultiPixelPackedSampleModel与指定数据类型,宽度,高度,每像素比特数,扫描行间距和数据位偏移量。
|
| Modifier and Type | Method and Description |
|---|---|
SampleModel |
createCompatibleSampleModel(int w, int h)
创建一个具有指定宽度和高度的新的
MultiPixelPackedSampleModel 。
|
DataBuffer |
createDataBuffer()
创建一个
DataBuffer于此
MultiPixelPackedSampleModel 。
|
SampleModel |
createSubsetSampleModel(int[] bands)
创建一个新
MultiPixelPackedSampleModel本的band子集
MultiPixelPackedSampleModel 。
|
boolean |
equals(Object o)
指示一些其他对象是否等于此。
|
int |
getBitOffset(int x)
将扫描线的
x像素的偏移量返回到其存储的数据元素中。
|
int |
getDataBitOffset()
以位为单位返回数据位偏移量。
|
Object |
getDataElements(int x, int y, Object obj, DataBuffer data)
返回TransferType类型的原始数组中单个像素的数据。
|
int |
getNumDataElements()
|
int |
getOffset(int x, int y)
返回数据数组元素中像素(x,y)的偏移量。
|
int[] |
getPixel(int x, int y, int[] iArray, DataBuffer data)
返回
int数组的第一个元素中指定的单频带像素。
|
int |
getPixelBitStride()
返回像素位以位为单位。
|
int |
getSample(int x, int y, int b, DataBuffer data)
返回
int位于(x,y)处的像素的指定带中的样本。
|
int[] |
getSampleSize()
返回所有频带的每个样本的位数。
|
int |
getSampleSize(int band)
返回指定频带的每个样本的位数。
|
int |
getScanlineStride()
返回扫描线步幅。
|
int |
getTransferType()
返回用于通过
getDataElements和
setDataElements方法传输像素的
setDataElements 。
|
int |
hashCode()
返回对象的哈希码值。
|
void |
setDataElements(int x, int y, Object obj, DataBuffer data)
设置在指定的一个单个像素的数据
DataBuffer TransferType类型的基本数组。
|
void |
setPixel(int x, int y, int[] iArray, DataBuffer data)
在
DataBuffer使用
int阵列设置一个像素进行输入。
|
void |
setSample(int x, int y, int b, int s, DataBuffer data)
使用
int输入,为
DataBuffer中位于(x,y)处的像素的指定波段设置一个采样。
|
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getSamples, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setPixels, setSample, setSample, setSamples, setSamples, setSamplespublic MultiPixelPackedSampleModel(int dataType,
int w,
int h,
int numberOfBits)
MultiPixelPackedSampleModel数据类型,宽度,高度和每像素位数的MultiPixelPackedSampleModel。
dataType - 存储样本的数据类型
w - 描述的图像数据区域的宽度(以像素为单位)
h - 描述的图像数据区域的高度(以像素为单位)
numberOfBits - 每像素的位数
IllegalArgumentException -如果
dataType不是非此即彼
DataBuffer.TYPE_BYTE ,
DataBuffer.TYPE_USHORT ,或
DataBuffer.TYPE_INT
public MultiPixelPackedSampleModel(int dataType,
int w,
int h,
int numberOfBits,
int scanlineStride,
int dataBitOffset)
MultiPixelPackedSampleModel与指定数据类型,宽度,高度,每像素比特数,扫描行间距和数据位偏移量。
dataType - 存储样本的数据类型
w - 描述的图像数据区域的宽度(以像素为单位)
h - 描述的图像数据区域的高度(以像素为单位)
numberOfBits - 每像素的位数
scanlineStride - 图像数据的行走
dataBitOffset - 描述的图像数据区域的数据位偏移量
RasterFormatException - 如果每像素的比特数不是2的幂,或者如果2个像素的幂不适合于一个数据元素。
IllegalArgumentException - 如果
w或
h不大于0
IllegalArgumentException -如果
dataType不是非此即彼
DataBuffer.TYPE_BYTE ,
DataBuffer.TYPE_USHORT ,或
DataBuffer.TYPE_INT
public SampleModel createCompatibleSampleModel(int w, int h)
MultiPixelPackedSampleModel 。
新的MultiPixelPackedSampleModel具有与MultiPixelPackedSampleModel相同的存储数据类型和每像素的MultiPixelPackedSampleModel 。
createCompatibleSampleModel在类别
SampleModel
w - 指定的宽度
h - 指定的高度
SampleModel具有指定的宽度和高度,并具有与MultiPixelPackedSampleModel相同的存储数据类型和每像素的MultiPixelPackedSampleModel 。
IllegalArgumentException - 如果
w或
h不大于0
public DataBuffer createDataBuffer()
DataBuffer于此MultiPixelPackedSampleModel 。
DataBuffer对象的数据类型和大小与此MultiPixelPackedSampleModel 。
DataBuffer有一个银行。
createDataBuffer在类别
SampleModel
DataBuffer具有与此相同的数据类型和大小
MultiPixelPackedSampleModel 。
public int getNumDataElements()
getDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)和setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)方法传输一个像素所需的数据元素数。
对于一个MultiPixelPackedSampleModel ,这是一个。
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()
public int[] getSampleSize()
getSampleSize在
SampleModel
public int getSampleSize(int band)
getSampleSize在类别
SampleModel
band - 指定乐队
public int getOffset(int x,
int y)
x - 指定像素的X坐标
y - 指定像素的Y坐标
public int getBitOffset(int x)
x像素的偏移量返回到其存储的数据元素中。
所有扫描线的偏移量相同。
x - 指定的像素
public int getScanlineStride()
MultiPixelPackedSampleModel 。
public int getPixelBitStride()
pixelBitStride的
MultiPixelPackedSampleModel 。
public int getDataBitOffset()
dataBitOffset的
MultiPixelPackedSampleModel 。
public int getTransferType()
getDataElements和setDataElements方法传输像素的setDataElements 。
TransferType可能与存储DataType相同也可能不一样。
TransferType是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT之一。
getTransferType在类别
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.getNumDataElements() , DataBuffer
public SampleModel createSubsetSampleModel(int[] bands)
MultiPixelPackedSampleModel本的band子集MultiPixelPackedSampleModel 。
由于MultiPixelPackedSampleModel只有一个频带,所以频带参数的长度必须为1,表示第0个频带。
createSubsetSampleModel在类别
SampleModel
bands - 指定乐队
SampleModel与这个
MultiPixelPackedSampleModel一个带的子集。
RasterFormatException - 如果
RasterFormatException的频带数不是一个。
IllegalArgumentException - 如果
w或
h不大于0
public int getSample(int x,
int y,
int b,
DataBuffer data)
int位于(x,y)处的像素的指定带中的样本。
一个ArrayIndexOutOfBoundsException如果坐标不在边界被抛出。
getSample在
SampleModel
x - 指定像素的X坐标
y - 指定像素的Y坐标
b - 要返回的频带,假定为0
data - 包含图像数据的
DataBuffer
ArrayIndexOutOfBoundsException - 如果指定的坐标不在边界内。
setSample(int, int, int, int, DataBuffer)
public void setSample(int x,
int y,
int b,
int s,
DataBuffer data)
DataBuffer使用int为输入设置位于(x,y)处的像素的指定频带中的样本。
一个ArrayIndexOutOfBoundsException如果坐标不在边界被抛出。
setSample在类别
SampleModel
x - 指定像素的X坐标
y - 指定像素的Y坐标
b - 要返回的频带,假定为0
s - 输入样本为
int
data - 存储图像数据的
DataBuffer
ArrayIndexOutOfBoundsException - 如果坐标不在边界。
getSample(int, int, int, DataBuffer)
public Object getDataElements(int x, int y, Object obj, DataBuffer data)
MultiPixelPackedSampleModel ,该数组具有一个元素,并且该类型是可容纳单个像素的DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT中的最小值。
通常, obj应传递在如null ,使得Object被自动创建,并且是正确的原始数据类型。
以下代码说明从DataBuffer db1一个像素的数据,其存储布局由MultiPixelPackedSampleModel mppsm1为DataBuffer db2 ,其存储布局由MultiPixelPackedSampleModel mppsm2 。 转移通常比使用getPixel或setPixel更setPixel 。
MultiPixelPackedSampleModel mppsm1, mppsm2;
DataBufferInt db1, db2;
mppsm2.setDataElements(x, y, mppsm1.getDataElements(x, y, null,
db1), db2);
如果SampleModels具有相同数量的频带,则使用getDataElements或setDataElements在两个DataBuffer/SampleModel对之间传输是合法的,对应的频带具有与每个样本相同的比特数,并且TransferTypes是相同的。
如果obj不是null ,它应该是TransferType类型的原始数组。 否则,抛出一个ClassCastException 。 一个ArrayIndexOutOfBoundsException如果坐标不在边界被抛出,或者如果obj不null并没有大到足以容纳像素数据。
getDataElements在类别
SampleModel
x - 指定像素的X坐标
y - 指定像素的Y坐标
obj - 返回像素数据的原始数组或
null 。
data - 包含图像数据的
DataBuffer 。
Object包含指定像素的数据。
ClassCastException - 如果
obj不是TransferType类型的原始数组或不是
null
ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者如果
obj不是
null或不够大到不能保持像素数据
setDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
int数组的第一个元素中指定的单频带像素。
ArrayIndexOutOfBoundsException如果坐标不在边界被抛出。
getPixel在类别
SampleModel
x - 指定像素的X坐标
y - 指定像素的Y坐标
iArray - 包含要返回的像素的数组或
null
data - 存储图像数据的
DataBuffer
ArrayIndexOutOfBoundsException - 如果坐标不在边界内
setPixel(int, int, int[], DataBuffer)
public void setDataElements(int x,
int y,
Object obj,
DataBuffer data)
DataBuffer TransferType类型的基本数组。
对于MultiPixelPackedSampleModel ,仅数组的第一个元素将保存有效数据,并且类型必须是可容纳单个像素的DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT中最小的数据。
下面的代码说明从用于一个像素的数据DataBuffer db1 ,其存储布局由描述MultiPixelPackedSampleModel mppsm1 ,到DataBuffer db2 ,其存储布局由描述MultiPixelPackedSampleModel mppsm2 。 转移通常比使用getPixel或setPixel更setPixel 。
MultiPixelPackedSampleModel mppsm1, mppsm2;
DataBufferInt db1, db2;
mppsm2.setDataElements(x, y, mppsm1.getDataElements(x, y, null,
db1), db2);
如果SampleModel对象具有相同数量的频带,则使用getDataElements或setDataElements在两个DataBuffer/SampleModel对之间传输是合法的,对应的频带具有与每个样本相同的位数,TransferTypes是相同的。
obj必须是TransferType类型的原始数组。 否则,抛出ClassCastException 。 一个ArrayIndexOutOfBoundsException如果坐标不在边界被抛出,或者如果obj不够大,无法容纳像素数据。
setDataElements在类别
SampleModel
x - 像素位置的X坐标
y - 像素位置的Y坐标
obj - 包含像素数据的原始数组
data - 包含图像数据的
DataBuffer
getDataElements(int, int, Object, DataBuffer)
public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
DataBuffer使用int数组设置像素进行输入。
ArrayIndexOutOfBoundsException如果坐标不在边界被抛出。
setPixel在
SampleModel
x - 像素位置的X坐标
y - 像素位置的Y坐标
iArray -
int数组中的输入像素
data - 包含图像数据的
DataBuffer
getPixel(int, int, int[], DataBuffer)
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
public int hashCode()
Object
HashMap提供的。
hashCode的总合同是:
hashCode方法必须始终返回相同的整数,前提是修改了对象中equals比较中的信息。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。 equals(Object)方法两个对象相等,则在两个对象中的每个对象上调用hashCode方法必须产生相同的整数结果。 Object.equals(java.lang.Object)方法不相等,则在两个对象中的每个对象上调用hashCode方法必须产生不同的整数结果。 但是,程序员应该意识到,为不等对象生成不同的整数结果可能会提高哈希表的性能。 尽可能合理实用,由类别Object定义的hashCode方法确实为不同对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但Java的编程语言不需要此实现技术。)
hashCode在类别
Object
Object.equals(java.lang.Object) ,
System.identityHashCode(java.lang.Object)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.