JavaTM 2 Platform
Standard Ed. 6

java.awt.image
類別 BandedSampleModel

java.lang.Object
  繼承者 java.awt.image.SampleModel
      繼承者 java.awt.image.ComponentSampleModel
          繼承者 java.awt.image.BandedSampleModel

public final class BandedSampleModel
extends ComponentSampleModel

此類別表示以 band 交錯方式存儲的圖像資料,像素的每個樣本都佔用 DataBuffer 的一個資料元素。此類別是 ComponentSampleModel 的子類別,但是對於存取 band 交錯圖像資料來說,它提供的實作比 ComponentSampleModel 提供的實作更有效。當處理存儲在不同 DataBuffer 存儲單元中每個 band 樣本資料的圖像時,通常應該使用此類別。由於提供了存取方法,因此可以直接對圖像資料進行操作。像素間距是同一 掃瞄行上同一 band 的兩個樣本之間的資料陣列元素數。BandedSampleModel 的像素間距為 1。掃瞄行間距是給定樣本與下一掃瞄行的同一列中對應樣本之間的資料陣列元素數。band 偏移量表示從保存每個 band 的 DataBuffer 存儲單元第一個資料陣列元素到 band 第一個樣本之間的資料陣列元素數。這些 band 從 0 到 N-1 進行編號。存儲單元索引表示資料緩衝區存儲單元與圖像資料 band 之間的對應關係。此類別支持 TYPE_BYTETYPE_USHORTTYPE_SHORTTYPE_INTTYPE_FLOATTYPE_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
 

建構子詳細資訊

BandedSampleModel

public BandedSampleModel(int dataType,
                         int w,
                         int h,
                         int numBands)
建構一個具有指定參數的 BandedSampleModel。像素間距將為一個資料元素。掃瞄行間距與寬度相同。每個 band 都存儲在一個單獨的存儲單元中,所有 band 偏移量都為零。

參數:
dataType - 存儲樣本的資料型別。
w - 所描述的圖像資料區域的寬度(以像素為單位)。
h - 所描述的圖像資料區域的高度(以像素為單位)。
numBands - 圖像資料的 band 數。
拋出:
IllegalArgumentException - 如果 dataType 不是受支持的資料型別之一

BandedSampleModel

public BandedSampleModel(int dataType,
                         int w,
                         int h,
                         int scanlineStride,
                         int[] bankIndices,
                         int[] bandOffsets)
建構一個具有指定參數的 BandedSampleModel。可以從 bandOffsets bankIndices 陣列的長度推斷 band 數,它們必須相等。像素間距將為一個資料元素。

參數:
dataType - 存儲樣本的資料型別。
w - 所描述的圖像資料區域的寬度(以像素為單位)。
h - 所描述的圖像資料區域的高度(以像素為單位)。
scanlineStride - 圖像資料的行間距。
bankIndices - 每個 band 的存儲單元索引。
bandOffsets - 每個 band 的 band 偏移量。
拋出:
IllegalArgumentException - 如果 dataType 不是受支持的資料型別之一
方法詳細資訊

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
創建一個具有指定寬度和高度的新的 BandedSampleModel。新 BandedSampleModel 將具有與此 BandedSampleModel 相同的 band 數、存儲資料型別和存儲單元索引。band 偏移量將被壓縮,使得 band 之間的偏移量為 w*pixelStride,並且所有 band 偏移量的最小值為零。

覆寫:
類別 ComponentSampleModel 中的 createCompatibleSampleModel
參數:
w - 得到的 BandedSampleModel 的寬度
h - 得到的 BandedSampleModel 的高度
返回:
具有指定寬度和高度的新 BandedSampleModel
拋出:
IllegalArgumentException - 如果 wh 等於 Integer.MAX_VALUEInteger.MIN_VALUE
IllegalArgumentException - 如果 dataType 不是受支持的資料型別之一

createSubsetSampleModel

public SampleModel createSubsetSampleModel(int[] bands)
創建一個具有此 BandedSampleModel 的 band 子集的新 BandedSampleModel。新的 BandedSampleModel 可以與任何使用現有 BandedSampleModel 的 DataBuffer 一起使用。新的 BandedSampleModel/DataBuffer 組合將表示一個具有原 BandedSampleModel/DataBuffer 組合 band 子集的圖像。

覆寫:
類別 ComponentSampleModel 中的 createSubsetSampleModel
參數:
bands - 此 ComponentSampleModel 的 band 子集
返回:
已創建的具有此 ComponentSampleModel band 子集的 ComponentSampleModel
拋出:
RasterFormatException - 如果 band 數大於此樣本模型中的存儲單元數。
IllegalArgumentException - 如果 dataType 不是受支持的資料型別之一

createDataBuffer

public DataBuffer createDataBuffer()
創建一個與此 BandedSampleModel 對應的 DataBuffer,該 DataBuffer 的資料型別、存儲單元數和大小都將與此 BandedSampleModel 一致。

覆寫:
類別 ComponentSampleModel 中的 createDataBuffer
返回:
資料型別、存儲單元的數量和大小與此 ComponentSampleModel 一致的 DataBuffer
拋出:
IllegalArgumentException - 如果 dataType 不是受支持的型別之一。

getDataElements

public Object getDataElements(int x,
                              int y,
                              Object obj,
                              DataBuffer data)
在 TransferType 型別基本陣列中返回單個像素的資料。對於 BandedSampleModel,返回的資料與 data 型別相同,並將對每個陣列元素返回一個樣本。通常,obj 作為 null 傳入,從而 Object 將被自動創建,並具有正確的基本資料型別。

以下程式碼說明了如何將一個像素的資料從 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 中的 getDataElements
參數:
x - 像素位置的 X 坐標
y - 像素位置的 Y 坐標
obj - 如果不為 null,則為一個接收返回像素資料的基本陣列。
data - 套件含圖像資料的 DataBuffer。
返回:
指定像素的資料。
另請參見:
setDataElements(int, int, Object, DataBuffer)

getPixel

public int[] getPixel(int x,
                      int y,
                      int[] iArray,
                      DataBuffer data)
在 int 陣列中返回指定像素的所有樣本。如果坐標不在邊界內部,則拋出 ArrayIndexOutOfBoundsException。

覆寫:
類別 ComponentSampleModel 中的 getPixel
參數:
x - 像素位置的 X 坐標
y - 像素位置的 Y 坐標
iArray - 如果不為 null,則在此陣列中返回樣本
data - 套件含圖像資料的 DataBuffer
返回:
指定像素的樣本。
另請參見:
setPixel(int, int, int[], DataBuffer)

getPixels

public int[] getPixels(int x,
                       int y,
                       int w,
                       int h,
                       int[] iArray,
                       DataBuffer data)
在 int 陣列中返回指定像素矩形的所有樣本,每個資料陣列元素對應一個樣本。如果坐標不在邊界內部,則拋出 ArrayIndexOutOfBoundsException。

覆寫:
類別 ComponentSampleModel 中的 getPixels
參數:
x - 左上角像素位置的 X 坐標
y - 左上角像素位置的 Y 坐標
w - 像素矩形的寬度
h - 像素矩形的高度
iArray - 如果不為 null,則在此陣列中返回樣本
data - 套件含圖像資料的 DataBuffer
返回:
指定區域中像素的樣本。
另請參見:
setPixels(int, int, int, int, int[], DataBuffer)

getSample

public int getSample(int x,
                     int y,
                     int b,
                     DataBuffer data)
以 int 形式返回指定 band 中對應於 (x,y) 處像素的樣本。如果坐標不在邊界內部,則拋出 ArrayIndexOutOfBoundsException。

覆寫:
類別 ComponentSampleModel 中的 getSample
參數:
x - 像素位置的 X 坐標
y - 像素位置的 Y 坐標
b - 要返回的 band
data - 套件含圖像資料的 DataBuffer
返回:
指定 band 中對應於指定像素的樣本。
另請參見:
setSample(int, int, int, int, DataBuffer)

getSampleFloat

public float getSampleFloat(int x,
                            int y,
                            int b,
                            DataBuffer data)
以 float 形式返回指定 band 中對應於 (x,y) 處像素的樣本。如果坐標不在邊界內部,則拋出 ArrayIndexOutOfBoundsException。

覆寫:
類別 ComponentSampleModel 中的 getSampleFloat
參數:
x - 像素位置的 X 坐標
y - 像素位置的 Y 坐標
b - 要返回的 band
data - 套件含圖像資料的 DataBuffer
返回:
一個 float 值,表示指定 band 中對應於指定像素的樣本。

getSampleDouble

public double getSampleDouble(int x,
                              int y,
                              int b,
                              DataBuffer data)
以 double 形式返回指定 band 中對應於 (x,y) 處像素的樣本。如果坐標不在邊界內部,則拋出 ArrayIndexOutOfBoundsException。

覆寫:
類別 ComponentSampleModel 中的 getSampleDouble
參數:
x - 像素位置的 X 坐標
y - 像素位置的 Y 坐標
b - 要返回的 band
data - 套件含圖像資料的 DataBuffer
返回:
一個 double 值,表示指定 band 中對應於指定像素的樣本。

getSamples

public int[] getSamples(int x,
                        int y,
                        int w,
                        int h,
                        int b,
                        int[] iArray,
                        DataBuffer data)
在 int 陣列中返回指定 band 中對應於指定像素矩形的樣本,每個資料陣列元素對應一個樣本。如果坐標不在邊界內部,則拋出 ArrayIndexOutOfBoundsException。

覆寫:
類別 ComponentSampleModel 中的 getSamples
參數:
x - 左上角像素位置的 X 坐標
y - 左上角像素位置的 Y 坐標
w - 像素矩形的寬度
h - 像素矩形的高度
b - 要返回的 band
iArray - 如果不為 null,則返回此陣列中的樣本
data - 套件含圖像資料的 DataBuffer
返回:
指定 band 中對應於指定區域內像素的樣本。
另請參見:
setSamples(int, int, int, int, int, int[], DataBuffer)

setDataElements

public void setDataElements(int x,
                            int y,
                            Object obj,
                            DataBuffer data)
根據 TransferType 型別基本陣列設置指定 DataBuffer 中單個像素的資料。對於 BandedSampleModel,設置的資料與 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 中的 setDataElements
參數:
x - 像素位置的 X 坐標
y - 像素位置的 Y 坐標
obj - 如果不為 null,則返回此物件中的基本陣列
data - 套件含圖像資料的 DataBuffer
另請參見:
getDataElements(int, int, Object, DataBuffer)

setPixel

public void setPixel(int x,
                     int y,
                     int[] iArray,
                     DataBuffer data)
使用輸入樣本的 int 陣列設置 DataBuffer 中的像素。如果坐標不在邊界內部,則拋出 ArrayIndexOutOfBoundsException。

覆寫:
類別 ComponentSampleModel 中的 setPixel
參數:
x - 像素位置的 X 坐標
y - 像素位置的 Y 坐標
iArray - int 陣列中的輸入樣本
data - 套件含圖像資料的 DataBuffer
另請參見:
getPixel(int, int, int[], DataBuffer)

setPixels

public void setPixels(int x,
                      int y,
                      int w,
                      int h,
                      int[] iArray,
                      DataBuffer data)
根據 int 陣列設置對應於像素矩形的所有樣本,int 陣列中每個陣列元素包含一個樣本。如果坐標不在邊界內部,則拋出 ArrayIndexOutOfBoundsException。

覆寫:
類別 ComponentSampleModel 中的 setPixels
參數:
x - 像素位置左上角的 X 坐標
y - 像素位置左上角的 Y 坐標
w - 像素矩形的寬度
h - 像素矩形的高度
iArray - int 陣列中的輸入樣本
data - 套件含圖像資料的 DataBuffer
另請參見:
getPixels(int, int, int, int, int[], DataBuffer)

setSample

public void setSample(int x,
                      int y,
                      int b,
                      int s,
                      DataBuffer data)
使用輸入的 int 值設置指定 band 中對應於 DataBuffer 中 (x,y) 處像素的樣本。如果坐標不在邊界內部,則拋出 ArrayIndexOutOfBoundsException。

覆寫:
類別 ComponentSampleModel 中的 setSample
參數:
x - 像素位置的 X 坐標
y - 像素位置的 Y 坐標
b - 要設置的 band
s - 輸入的樣本(int 形式)
data - 套件含圖像資料的 DataBuffer
另請參見:
getSample(int, int, int, DataBuffer)

setSample

public void setSample(int x,
                      int y,
                      int b,
                      float s,
                      DataBuffer data)
使用輸入的 float 值設置指定 band 中對應於 DataBuffer 中 (x,y) 處像素的樣本。如果坐標不在邊界內部,則拋出 ArrayIndexOutOfBoundsException。

覆寫:
類別 ComponentSampleModel 中的 setSample
參數:
x - 像素位置的 X 坐標
y - 像素位置的 Y 坐標
b - 要設置的 band
s - 輸入的樣本(float 形式)
data - 套件含圖像資料的 DataBuffer
另請參見:
getSample(int, int, int, DataBuffer)

setSample

public void setSample(int x,
                      int y,
                      int b,
                      double s,
                      DataBuffer data)
使用輸入的 double 值設置指定 band 中對應於 DataBuffer 中 (x,y) 處像素的樣本。如果坐標不在邊界內部,則拋出 ArrayIndexOutOfBoundsException。

覆寫:
類別 ComponentSampleModel 中的 setSample
參數:
x - 像素位置的 X 坐標
y - 像素位置的 Y 坐標
b - 要設置的 band
s - 輸入的樣本(為一個 double 值)
data - 套件含圖像資料的 DataBuffer
另請參見:
getSample(int, int, int, DataBuffer)

setSamples

public void setSamples(int x,
                       int y,
                       int w,
                       int h,
                       int b,
                       int[] iArray,
                       DataBuffer data)
根據 int 陣列設置指定 band 中對應於指定像素矩形的樣本,int 陣列中每個資料陣列元素包含一個樣本。如果坐標不在邊界內部,則拋出 ArrayIndexOutOfBoundsException。

覆寫:
類別 ComponentSampleModel 中的 setSamples
參數:
x - 像素位置左上角的 X 坐標
y - 像素位置左上角的 Y 坐標
w - 像素矩形的寬度
h - 像素矩形的高度
b - 要設置的 band
iArray - 輸入的樣本陣列
data - 套件含圖像資料的 DataBuffer
另請參見:
getSamples(int, int, int, int, int, int[], DataBuffer)

hashCode

public int hashCode()
從類別 Object 複製的描述
返回該物件的雜湊碼值。支持此方法是為了提高雜湊表(例如 java.util.Hashtable 提供的雜湊表)的性能。

hashCode 的常規協定是:

實際上,由 Object 類別定義的 hashCode 方法確實會針對不同的物件返回不同的整數。(這一般是通過將該物件的內部位址轉換成一個整數來實作的,但是 JavaTM 程式語言不需要這種實作技巧。)

覆寫:
類別 ComponentSampleModel 中的 hashCode
返回:
此物件的一個雜湊碼值。
另請參見:
Object.equals(java.lang.Object), Hashtable

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only