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(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 乐队的一个子集的一个新的
MultiPixelPackedSampleModel 。
|
boolean |
equals(Object o)
指示是否有其他对象“等于”这一个。
|
int |
getBitOffset(int x)
返回位偏移,到数据元素,其存储的扫描
x th像素。
|
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 方法像素转移transfertype。
|
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 |
setSample(int x, int y, int b, int s, DataBuffer data)
设置指定的带样的像素位于(X,Y )用于输入
int 在
DataBuffer 。
|
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, setSamples
public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits)
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
。
createCompatibleSampleModel
方法重写,继承类
SampleModel
w
-指定的宽度
h
-指定高度
SampleModel
用指定的宽度和高度和相同的存储数据类型和每像素的比特数作为这
MultiPixelPackedSampleModel
。
IllegalArgumentException
-如果
w
或
h
不大于0
public DataBuffer createDataBuffer()
DataBuffer
对应于该
MultiPixelPackedSampleModel
。的
DataBuffer
对象的数据类型和大小与这
MultiPixelPackedSampleModel
一致,
DataBuffer
具有单个银行。
createDataBuffer
方法重写,继承类
SampleModel
MultiPixelPackedSampleModel
DataBuffer
。
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
th像素。这是所有的扫描线相同的偏移量。
x
-指定像素
public int getScanlineStride()
MultiPixelPackedSampleModel
扫描线步。
public int getPixelBitStride()
MultiPixelPackedSampleModel
的
pixelBitStride
。
public int getDataBitOffset()
MultiPixelPackedSampleModel
的
dataBitOffset
。
public int getTransferType()
getDataElements
和
setDataElements
方法像素转移transfertype。的transfertype可能或不可能作为存储的数据类型相同。这是一个databuffer.type_byte transfertype,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
乐队的一个子集的新
MultiPixelPackedSampleModel
。因为
MultiPixelPackedSampleModel
只有一个乐队,乐队的论点必须有一个长度和指示零带。
createSubsetSampleModel
方法重写,继承类
SampleModel
bands
-指定频带
SampleModel
MultiPixelPackedSampleModel
子集。
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)
int
在
DataBuffer
。如果一个
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
更有效。
multipixelpackedsamplemodel mppsm1,mppsm2;databufferint DB1、DB2;mppsm2。setdataelements(x,y,mppsm1。getdataelements(x,y,空,DB1、DB2));使用
getDataElements
或
setDataElements
两
DataBuffer/SampleModel
对之间的转让是合法的
SampleModels
如果有相同数量的频带,相应的带每个样本的位数相同的号码,和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
单个像素的数据。一
MultiPixelPackedSampleModel
,只有该数组的第一个元素是有效的数据,和类型必须是最小databuffer.type_byte,databuffer.type_ushort,或databuffer.type_int可以容纳一个像素。
下面的代码演示了一个像素数据传输从DataBuffer
db1
,其存储布局是通过MultiPixelPackedSampleModel
mppsm1
描述,对DataBuffer
db2
,其存储布局是通过MultiPixelPackedSampleModel
mppsm2
描述。转移通常比使用getPixel
或setPixel
更有效。
multipixelpackedsamplemodel mppsm1,mppsm2;databufferint DB1、DB2;mppsm2。setdataelements(x,y,mppsm1。getdataelements(x,y,空,DB1、DB2));使用
getDataElements
或
setDataElements
两
DataBuffer/SampleModel
对之间的转让是合法的如果
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)
int
阵列在
DataBuffer
。
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)
应该只有y.equals(x)
返回true
返回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
。类的方法实现Object
equals
最挑剔的对象可能的等价关系;就是说,对于任何非空的参考值x
和y
,此方法返回true
当且仅当x
和y
引用同一个对象(x == y
有价值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.