|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.awt.image.SampleModel java.awt.image.MultiPixelPackedSampleModel
public class MultiPixelPackedSampleModel
MultiPixelPackedSampleModel
類別表示單 band 圖像,能夠將多個單樣本像素打包到一個資料元素中。像素不能跨越資料元素。資料型別可以是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT。每個像素必須是位數的 2 的次方,像素數的 2 的次方也必須正好能放入一個資料元素。像素位的間距等於每個像素的位數。掃瞄行間距在資料元素中,最後幾個資料元素可以由未使用的像素填充。資料位的偏移量是從 DataBuffer
起始處到第一個像素的位偏移量,必須是像素位間距的倍數。
以下程式碼說明了如何從 DataBuffer
data
中提取像素 x, y
的位並將像素資料存儲到 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);
欄位摘要 |
---|
從類別 java.awt.image.SampleModel 繼承的欄位 |
---|
dataType, height, numBands, width |
建構子摘要 | |
---|---|
MultiPixelPackedSampleModel(int dataType,
int w,
int h,
int numberOfBits)
建構一個具有指定資料型別、寬度、高度和每像素位數的 MultiPixelPackedSampleModel 。 |
|
MultiPixelPackedSampleModel(int dataType,
int w,
int h,
int numberOfBits,
int scanlineStride,
int dataBitOffset)
建構一個具有指定資料型別、寬度、高度、每像素位數、掃瞄行間距和資料位偏移量的 MultiPixelPackedSampleModel 。 |
方法摘要 | |
---|---|
SampleModel |
createCompatibleSampleModel(int w,
int h)
建構一個具有指定寬度和高度的新 MultiPixelPackedSampleModel 。 |
DataBuffer |
createDataBuffer()
創建一個與此 MultiPixelPackedSampleModel 對應的 DataBuffer 。 |
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()
返回通過 getDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) 和 setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) 方法傳輸一個像素所需的資料元素數。 |
int |
getOffset(int x,
int y)
返回資料陣列元素中像素 (x, y) 的偏移量。 |
int[] |
getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
返回 int 陣列第一個元素中的指定單個 band 像素。 |
int |
getPixelBitStride()
返回像素位間距,以位為單位。 |
int |
getSample(int x,
int y,
int b,
DataBuffer data)
以 int 形式返回指定 band 中對應於 (x, y) 處像素的樣本。 |
int[] |
getSampleSize()
返回所有 band 的每樣本位數。 |
int |
getSampleSize(int band)
返回指定 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)
使用輸入的 int ,設置指定 band 中對應於 DataBuffer (x,y) 處像素的樣本。 |
從類別 java.awt.image.SampleModel 繼承的方法 |
---|
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 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
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
相同的存儲資料型別和每像素位數。
SampleModel
中的 createCompatibleSampleModel
w
- 指定的寬度h
- 指定的高度
SampleModel
,具有指定寬度和高度,並且具有與此 MultiPixelPackedSampleModel
相同的存儲資料型別和每像素位數。
IllegalArgumentException
- 如果 w
或 h
不大於 0public DataBuffer createDataBuffer()
MultiPixelPackedSampleModel
對應的 DataBuffer
。該 DataBuffer
物件的資料型別和大小與此 MultiPixelPackedSampleModel
一致。DataBuffer
具有單個存儲單元。
SampleModel
中的 createDataBuffer
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
,該值是一。
SampleModel
中的 getNumDataElements
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()
SampleModel
中的 getSampleSize
public int getSampleSize(int band)
SampleModel
中的 getSampleSize
band
- 指定的 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()
MultiPixelPackedSampleModel
的 pixelBitStride
。public int getDataBitOffset()
MultiPixelPackedSampleModel
的 dataBitOffset
。public int getTransferType()
getDataElements
和 setDataElements
方法傳輸像素所使用的 TransferType。該 TransferType 可能與存儲 DataType 相同,也可能不同。TransferType 是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT 之一。
SampleModel
中的 getTransferType
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
只有一個 band,所以 bands 參數的長度必須為 1,指示第 0 個 band。
SampleModel
中的 createSubsetSampleModel
bands
- 指定的 band
MultiPixelPackedSampleModel
band 子集的新 SampleModel
。
RasterFormatException
- 如果請求的 band 數不是 1。
IllegalArgumentException
- 如果 w
或 h
不大於 0public int getSample(int x, int y, int b, DataBuffer data)
int
形式返回指定 band 中對應於 (x, y) 處像素的樣本。如果坐標超出了範圍,則拋出 ArrayIndexOutOfBoundsException
。
SampleModel
中的 getSample
x
- 指定像素的 X 坐標y
- 指定像素的 Y 坐標b
- 返回的 band,假定為 0data
- 套件含圖像資料的 DataBuffer
ArrayIndexOutOfBoundException
- 如果指定的坐標超出了範圍。setSample(int, int, int, int, DataBuffer)
public void setSample(int x, int y, int b, int s, DataBuffer data)
int
,設置指定 band 中對應於 DataBuffer
(x,y) 處像素的樣本。如果坐標超出了範圍,則拋出 ArrayIndexOutOfBoundsException
。
SampleModel
中的 setSample
x
- 指定像素的 X 坐標y
- 指定像素的 Y 坐標b
- 返回的 band,假定為 0s
- 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, null, db1), db2);如果兩個
SampleModel
具有相同的 band 數,相應的 band 具有相同的每樣本位數,並且 TransferType 也相同,則使用 getDataElements
或 setDataElements
在兩個 DataBuffer/SampleModel
對之間進行傳輸是合法的。
如果 obj
不為 null
,則它應是一個 TransferType 型別的基本陣列。否則將拋出 ClassCastException
。如果坐標超出了範圍,或者 obj
不為 null
並且其大小不足以保存該像素資料,則拋出 ArrayIndexOutOfBoundsException
。
SampleModel
中的 getDataElements
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
陣列第一個元素中的指定單個 band 像素。如果坐標超出了範圍,則拋出 ArrayIndexOutOfBoundsException
。
SampleModel
中的 getPixel
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, null, db1), db2);如果兩個
SampleModel
物件具有相同的 band 數,相應的 band 具有相同的每樣本位數,並且 TransferType 也相同,則使用 getDataElements
或 setDataElements
在兩個 DataBuffer/SampleModel
對之間進行傳輸是合法的。
obj
必須是 TransferType 型別的基本陣列。否則將拋出 ClassCastException
。如果坐標超出了範圍,或者 obj
大小不足以保存該像素資料,則拋出 ArrayIndexOutOfBoundsException
。
SampleModel
中的 setDataElements
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
。
SampleModel
中的 setPixel
x
- 像素位置的 X 坐標y
- 像素位置的 Y 坐標iArray
- int
陣列中的輸入像素data
- 套件含圖像資料的 DataBuffer
getPixel(int, int, int[], DataBuffer)
public boolean equals(Object o)
Object
複製的描述
equals
方法在非空(null)物件參考上實作相等關係:
x
,x.equals(x)
都應返回 true
。
x
和 y
,當且僅當 y.equals(x)
返回 true
時,x.equals(y)
才應返回 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 方法實作物件上差別可能性最大的相等關係;即,對於任何非空(null)參考值 x
和 y
,當且僅當 x
和 y
參考同一個物件時,此方法才返回 true
(x == y
具有值 true
)。
注意:當此方法被覆寫時,通常有必要覆寫 hashCode 方法,以維護 hashCode 方法的常規協定,該協定宣告相等物件必須具有相等的雜湊碼。
Object
中的 equals
o
- 要與之比較的參考物件。
true
;否則返回 false
。Object.hashCode()
,
Hashtable
public int hashCode()
Object
複製的描述java.util.Hashtable
提供的雜湊表)的性能。
hashCode
的常規協定是:
hashCode
方法都必須產生相同的整數結果。
Object.equals(java.lang.Object)
方法,兩個物件不相等,那麼對這兩個物件中的任一物件上調用 hashCode 方法不 要求一定產生不同的整數結果。但是,開發人員應該意識到,為不相等的物件產生不同整數結果可以提高雜湊表的性能。
實際上,由 Object 類別定義的 hashCode 方法確實會針對不同的物件返回不同的整數。(這一般是通過將該物件的內部位址轉換成一個整數來實作的,但是 JavaTM 程式語言不需要這種實作技巧。)
Object
中的 hashCode
Object.equals(java.lang.Object)
,
Hashtable
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。