|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjava.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 中的 createCompatibleSampleModelw - 指定的寬度h - 指定的高度
SampleModel,具有指定寬度和高度,並且具有與此 MultiPixelPackedSampleModel 相同的存儲資料型別和每像素位數。
IllegalArgumentException - 如果 w 或 h 不大於 0public DataBuffer createDataBuffer()
MultiPixelPackedSampleModel 對應的 DataBuffer。該 DataBuffer 物件的資料型別和大小與此 MultiPixelPackedSampleModel 一致。DataBuffer 具有單個存儲單元。
SampleModel 中的 createDataBufferMultiPixelPackedSampleModel 相同的 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 中的 getNumDataElementsSampleModel.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 中的 getSampleSizepublic int getSampleSize(int band)
SampleModel 中的 getSampleSizeband - 指定的 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 中的 getTransferTypeSampleModel.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(),
DataBufferpublic SampleModel createSubsetSampleModel(int[] bands)
MultiPixelPackedSampleModel band 子集的新 MultiPixelPackedSampleModel。因為 MultiPixelPackedSampleModel 只有一個 band,所以 bands 參數的長度必須為 1,指示第 0 個 band。
SampleModel 中的 createSubsetSampleModelbands - 指定的 band
MultiPixelPackedSampleModel band 子集的新 SampleModel。
RasterFormatException - 如果請求的 band 數不是 1。
IllegalArgumentException - 如果 w 或 h 不大於 0
public int getSample(int x,
int y,
int b,
DataBuffer data)
int 形式返回指定 band 中對應於 (x, y) 處像素的樣本。如果坐標超出了範圍,則拋出 ArrayIndexOutOfBoundsException。
SampleModel 中的 getSamplex - 指定像素的 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 中的 setSamplex - 指定像素的 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 中的 getDataElementsx - 指定像素的 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 中的 getPixelx - 像素位置的 X 坐標y - 像素位置的 Y 坐標iArray - 套件含要返回像素的陣列,或者為 nulldata - 存儲圖像資料的 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 中的 setDataElementsx - 像素位置的 X 坐標y - 像素位置的 Y 坐標obj - 套件含像素資料的基本陣列data - 套件含圖像資料的 DataBuffergetDataElements(int, int, Object, DataBuffer)
public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
int 陣列設置 DataBuffer 中的某個像素。如果坐標超出了範圍,則拋出 ArrayIndexOutOfBoundsException。
SampleModel 中的 setPixelx - 像素位置的 X 坐標y - 像素位置的 Y 坐標iArray - int 陣列中的輸入像素data - 套件含圖像資料的 DataBuffergetPixel(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 中的 equalso - 要與之比較的參考物件。
true;否則返回 false。Object.hashCode(),
Hashtablepublic int hashCode()
Object 複製的描述java.util.Hashtable 提供的雜湊表)的性能。
hashCode 的常規協定是:
hashCode 方法都必須產生相同的整數結果。
Object.equals(java.lang.Object) 方法,兩個物件不相等,那麼對這兩個物件中的任一物件上調用 hashCode 方法不 要求一定產生不同的整數結果。但是,開發人員應該意識到,為不相等的物件產生不同整數結果可以提高雜湊表的性能。
實際上,由 Object 類別定義的 hashCode 方法確實會針對不同的物件返回不同的整數。(這一般是通過將該物件的內部位址轉換成一個整數來實作的,但是 JavaTM 程式語言不需要這種實作技巧。)
Object 中的 hashCodeObject.equals(java.lang.Object),
Hashtable
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。