|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjava.awt.image.SampleModel
java.awt.image.ComponentSampleModel
java.awt.image.BandedSampleModel
public final class BandedSampleModel
此類別表示以 band 交錯方式存儲的圖像資料,像素的每個樣本都佔用 DataBuffer 的一個資料元素。此類別是 ComponentSampleModel 的子類別,但是對於存取 band 交錯圖像資料來說,它提供的實作比 ComponentSampleModel 提供的實作更有效。當處理存儲在不同 DataBuffer 存儲單元中每個 band 樣本資料的圖像時,通常應該使用此類別。由於提供了存取方法,因此可以直接對圖像資料進行操作。像素間距是同一 掃瞄行上同一 band 的兩個樣本之間的資料陣列元素數。BandedSampleModel 的像素間距為 1。掃瞄行間距是給定樣本與下一掃瞄行的同一列中對應樣本之間的資料陣列元素數。band 偏移量表示從保存每個 band 的 DataBuffer 存儲單元第一個資料陣列元素到 band 第一個樣本之間的資料陣列元素數。這些 band 從 0 到 N-1 進行編號。存儲單元索引表示資料緩衝區存儲單元與圖像資料 band 之間的對應關係。此類別支持 TYPE_BYTE、TYPE_USHORT、TYPE_SHORT、TYPE_INT、TYPE_FLOAT 和 TYPE_DOUBLE 資料型別。
| 欄位摘要 |
|---|
| 從類別 java.awt.image.ComponentSampleModel 繼承的欄位 |
|---|
bandOffsets, bankIndices, numBands, numBanks, pixelStride, scanlineStride |
| 從類別 java.awt.image.SampleModel 繼承的欄位 |
|---|
dataType, height, width |
| 建構子摘要 | |
|---|---|
BandedSampleModel(int dataType,
int w,
int h,
int numBands)
建構一個具有指定參數的 BandedSampleModel。 |
|
BandedSampleModel(int dataType,
int w,
int h,
int scanlineStride,
int[] bankIndices,
int[] bandOffsets)
建構一個具有指定參數的 BandedSampleModel。 |
|
| 方法摘要 | |
|---|---|
SampleModel |
createCompatibleSampleModel(int w,
int h)
創建一個具有指定寬度和高度的新的 BandedSampleModel。 |
DataBuffer |
createDataBuffer()
創建一個與此 BandedSampleModel 對應的 DataBuffer,該 DataBuffer 的資料型別、存儲單元數和大小都將與此 BandedSampleModel 一致。 |
SampleModel |
createSubsetSampleModel(int[] bands)
創建一個具有此 BandedSampleModel 的 band 子集的新 BandedSampleModel。 |
Object |
getDataElements(int x,
int y,
Object obj,
DataBuffer data)
在 TransferType 型別基本陣列中返回單個像素的資料。 |
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)
以 int 形式返回指定 band 中對應於 (x,y) 處像素的樣本。 |
double |
getSampleDouble(int x,
int y,
int b,
DataBuffer data)
以 double 形式返回指定 band 中對應於 (x,y) 處像素的樣本。 |
float |
getSampleFloat(int x,
int y,
int b,
DataBuffer data)
以 float 形式返回指定 band 中對應於 (x,y) 處像素的樣本。 |
int[] |
getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
在 int 陣列中返回指定 band 中對應於指定像素矩形的樣本,每個資料陣列元素對應一個樣本。 |
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 陣列設置對應於像素矩形的所有樣本,int 陣列中每個陣列元素包含一個樣本。 |
void |
setSample(int x,
int y,
int b,
double s,
DataBuffer data)
使用輸入的 double 值設置指定 band 中對應於 DataBuffer 中 (x,y) 處像素的樣本。 |
void |
setSample(int x,
int y,
int b,
float s,
DataBuffer data)
使用輸入的 float 值設置指定 band 中對應於 DataBuffer 中 (x,y) 處像素的樣本。 |
void |
setSample(int x,
int y,
int b,
int s,
DataBuffer data)
使用輸入的 int 值設置指定 band 中對應於 DataBuffer 中 (x,y) 處像素的樣本。 |
void |
setSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
根據 int 陣列設置指定 band 中對應於指定像素矩形的樣本,int 陣列中每個資料陣列元素包含一個樣本。 |
| 從類別 java.awt.image.ComponentSampleModel 繼承的方法 |
|---|
equals, getBandOffsets, getBankIndices, getNumDataElements, getOffset, getOffset, getPixelStride, getSampleSize, getSampleSize, getScanlineStride |
| 從類別 java.awt.image.SampleModel 繼承的方法 |
|---|
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSamples, setSamples |
| 從類別 java.lang.Object 繼承的方法 |
|---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
| 建構子詳細資訊 |
|---|
public BandedSampleModel(int dataType,
int w,
int h,
int numBands)
dataType - 存儲樣本的資料型別。w - 所描述的圖像資料區域的寬度(以像素為單位)。h - 所描述的圖像資料區域的高度(以像素為單位)。numBands - 圖像資料的 band 數。
IllegalArgumentException - 如果 dataType 不是受支持的資料型別之一
public BandedSampleModel(int dataType,
int w,
int h,
int scanlineStride,
int[] bankIndices,
int[] bandOffsets)
dataType - 存儲樣本的資料型別。w - 所描述的圖像資料區域的寬度(以像素為單位)。h - 所描述的圖像資料區域的高度(以像素為單位)。scanlineStride - 圖像資料的行間距。bankIndices - 每個 band 的存儲單元索引。bandOffsets - 每個 band 的 band 偏移量。
IllegalArgumentException - 如果 dataType 不是受支持的資料型別之一| 方法詳細資訊 |
|---|
public SampleModel createCompatibleSampleModel(int w,
int h)
ComponentSampleModel 中的 createCompatibleSampleModelw - 得到的 BandedSampleModel 的寬度h - 得到的 BandedSampleModel 的高度
BandedSampleModel。
IllegalArgumentException - 如果 w 或 h 等於 Integer.MAX_VALUE 或 Integer.MIN_VALUE
IllegalArgumentException - 如果 dataType 不是受支持的資料型別之一public SampleModel createSubsetSampleModel(int[] bands)
ComponentSampleModel 中的 createSubsetSampleModelbands - 此 ComponentSampleModel 的 band 子集
ComponentSampleModel band 子集的 ComponentSampleModel。
RasterFormatException - 如果 band 數大於此樣本模型中的存儲單元數。
IllegalArgumentException - 如果 dataType 不是受支持的資料型別之一public DataBuffer createDataBuffer()
ComponentSampleModel 中的 createDataBufferComponentSampleModel 一致的 DataBuffer。
IllegalArgumentException - 如果 dataType 不是受支持的型別之一。
public Object getDataElements(int x,
int y,
Object obj,
DataBuffer data)
以下程式碼說明了如何將一個像素的資料從 DataBuffer db1(其存儲佈局由 BandedSampleModel bsm1 描述)傳輸到 DataBuffer db2(其存儲佈局由 BandedSampleModel bsm2 描述)。通常,該傳輸比使用 getPixel/setPixel 方法更高效。
BandedSampleModel bsm1, bsm2;
DataBufferInt db1, db2;
bsm2.setDataElements(x, y, bsm1.getDataElements(x, y, null, db1),
db2);
如果兩個 SampleModel 具有相同的 band 數,相應 band 的每個樣本具有相同的位數,且 TransferType 相同,則使用 getDataElements/setDataElements 在這兩個 DataBuffer/SampleModel 對之間傳輸資料是合法的。
如果 obj 不為 null,則它應該是一個 TransferType 型別基本陣列。否則拋出 ClassCastException。如果坐標不在邊界內部,或者 obj 不為 null 且大小不足以容納像素資料,則拋出 ArrayIndexOutOfBoundsException。
ComponentSampleModel 中的 getDataElementsx - 像素位置的 X 坐標y - 像素位置的 Y 坐標obj - 如果不為 null,則為一個接收返回像素資料的基本陣列。data - 套件含圖像資料的 DataBuffer。
setDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
ComponentSampleModel 中的 getPixelx - 像素位置的 X 坐標y - 像素位置的 Y 坐標iArray - 如果不為 null,則在此陣列中返回樣本data - 套件含圖像資料的 DataBuffer
setPixel(int, int, int[], DataBuffer)
public int[] getPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
ComponentSampleModel 中的 getPixelsx - 左上角像素位置的 X 坐標y - 左上角像素位置的 Y 坐標w - 像素矩形的寬度h - 像素矩形的高度iArray - 如果不為 null,則在此陣列中返回樣本data - 套件含圖像資料的 DataBuffer
setPixels(int, int, int, int, int[], DataBuffer)
public int getSample(int x,
int y,
int b,
DataBuffer data)
ComponentSampleModel 中的 getSamplex - 像素位置的 X 坐標y - 像素位置的 Y 坐標b - 要返回的 banddata - 套件含圖像資料的 DataBuffer
setSample(int, int, int, int, DataBuffer)
public float getSampleFloat(int x,
int y,
int b,
DataBuffer data)
ComponentSampleModel 中的 getSampleFloatx - 像素位置的 X 坐標y - 像素位置的 Y 坐標b - 要返回的 banddata - 套件含圖像資料的 DataBuffer
public double getSampleDouble(int x,
int y,
int b,
DataBuffer data)
ComponentSampleModel 中的 getSampleDoublex - 像素位置的 X 坐標y - 像素位置的 Y 坐標b - 要返回的 banddata - 套件含圖像資料的 DataBuffer
public int[] getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
ComponentSampleModel 中的 getSamplesx - 左上角像素位置的 X 坐標y - 左上角像素位置的 Y 坐標w - 像素矩形的寬度h - 像素矩形的高度b - 要返回的 bandiArray - 如果不為 null,則返回此陣列中的樣本data - 套件含圖像資料的 DataBuffer
setSamples(int, int, int, int, int, int[], DataBuffer)
public void setDataElements(int x,
int y,
Object obj,
DataBuffer data)
以下程式碼說明了如何將一個像素的資料從 DataBuffer db1(其存儲佈局由 BandedSampleModel bsm1 描述)傳輸到 DataBuffer db2(其存儲佈局由 BandedSampleModel bsm2 描述)。通常,該傳輸比使用 getPixel/setPixel 更高效。
BandedSampleModel bsm1, bsm2;
DataBufferInt db1, db2;
bsm2.setDataElements(x, y, bsm1.getDataElements(x, y, null, db1),
db2);
如果兩個 SampleModels 具有相同的 band 數,相應 band 的每個樣本具有相同的位數,且 TransferTypes 相同,則使用 getDataElements/setDataElements 在這兩個 DataBuffer/SampleModel 對之間傳輸資料是合法的。
obj 必須是一個 TransferType 型別基本陣列。否則拋出 ClassCastException。如果坐標不在邊界內部,或者 obj 的大小不足以容納像素資料,則拋出 ArrayIndexOutOfBoundsException。
ComponentSampleModel 中的 setDataElementsx - 像素位置的 X 坐標y - 像素位置的 Y 坐標obj - 如果不為 null,則返回此物件中的基本陣列data - 套件含圖像資料的 DataBuffergetDataElements(int, int, Object, DataBuffer)
public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
ComponentSampleModel 中的 setPixelx - 像素位置的 X 坐標y - 像素位置的 Y 坐標iArray - int 陣列中的輸入樣本data - 套件含圖像資料的 DataBuffergetPixel(int, int, int[], DataBuffer)
public void setPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
ComponentSampleModel 中的 setPixelsx - 像素位置左上角的 X 坐標y - 像素位置左上角的 Y 坐標w - 像素矩形的寬度h - 像素矩形的高度iArray - int 陣列中的輸入樣本data - 套件含圖像資料的 DataBuffergetPixels(int, int, int, int, int[], DataBuffer)
public void setSample(int x,
int y,
int b,
int s,
DataBuffer data)
ComponentSampleModel 中的 setSamplex - 像素位置的 X 坐標y - 像素位置的 Y 坐標b - 要設置的 bands - 輸入的樣本(int 形式)data - 套件含圖像資料的 DataBuffergetSample(int, int, int, DataBuffer)
public void setSample(int x,
int y,
int b,
float s,
DataBuffer data)
ComponentSampleModel 中的 setSamplex - 像素位置的 X 坐標y - 像素位置的 Y 坐標b - 要設置的 bands - 輸入的樣本(float 形式)data - 套件含圖像資料的 DataBuffergetSample(int, int, int, DataBuffer)
public void setSample(int x,
int y,
int b,
double s,
DataBuffer data)
ComponentSampleModel 中的 setSamplex - 像素位置的 X 坐標y - 像素位置的 Y 坐標b - 要設置的 bands - 輸入的樣本(為一個 double 值)data - 套件含圖像資料的 DataBuffergetSample(int, int, int, DataBuffer)
public void setSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
ComponentSampleModel 中的 setSamplesx - 像素位置左上角的 X 坐標y - 像素位置左上角的 Y 坐標w - 像素矩形的寬度h - 像素矩形的高度b - 要設置的 bandiArray - 輸入的樣本陣列data - 套件含圖像資料的 DataBuffergetSamples(int, int, int, int, int, int[], DataBuffer)public int hashCode()
Object 複製的描述java.util.Hashtable 提供的雜湊表)的性能。
hashCode 的常規協定是:
hashCode 方法都必須產生相同的整數結果。
Object.equals(java.lang.Object) 方法,兩個物件不相等,那麼對這兩個物件中的任一物件上調用 hashCode 方法不 要求一定產生不同的整數結果。但是,開發人員應該意識到,為不相等的物件產生不同整數結果可以提高雜湊表的性能。
實際上,由 Object 類別定義的 hashCode 方法確實會針對不同的物件返回不同的整數。(這一般是通過將該物件的內部位址轉換成一個整數來實作的,但是 JavaTM 程式語言不需要這種實作技巧。)
ComponentSampleModel 中的 hashCodeObject.equals(java.lang.Object),
Hashtable
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。