JavaTM 2 Platform
Standard Ed. 6

java.awt.image
類別 SinglePixelPackedSampleModel

java.lang.Object
  繼承者 java.awt.image.SampleModel
      繼承者 java.awt.image.SinglePixelPackedSampleModel

public class SinglePixelPackedSampleModel
extends SampleModel

此類別表示壓縮的像素資料:將 N 個樣本組成的單個像素存儲在單個資料陣列元素中,每個資料陣列元素只保存一個像素的樣本。此類別支持 TYPE_BYTETYPE_USHORTTYPE_INT 資料型別。所有資料陣列元素都位於 DataBuffer 的第一個存儲單元中。該類別提供了一些存取方法,以便直接操作圖像資料。掃瞄行間距是給定樣本和下一個掃瞄行同一列中對應樣本之間的資料陣列元素數。位遮罩碼是提取表示像素 band 樣本所需的遮罩碼。位偏移量是樣本資料陣列元素中位的偏移量,其中樣本表示像素的 band。

以下程式碼說明了如何從 DataBuffer data 中提取表示像素 x,y 處 band b 的樣本位:

      int sample = data.getElem(y * scanlineStride + x);
      sample = (sample & bitMasks[b]) >>> bitOffsets[b];
 


欄位摘要
 
從類別 java.awt.image.SampleModel 繼承的欄位
dataType, height, numBands, width
 
建構子摘要
SinglePixelPackedSampleModel(int dataType, int w, int h, int[] bitMasks)
          建構一個具有 bitMasks.length band 的 SinglePixelPackedSampleModel。
SinglePixelPackedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bitMasks)
          建構一個 SinglePixelPackedSampleModel,使其具有 bitMasks.length band,且掃瞄行間距等於 scanlineStride 資料陣列元素。
 
方法摘要
 SampleModel createCompatibleSampleModel(int w, int h)
          創建一個具有指定寬度和高度的新 SinglePixelPackedSampleModel。
 DataBuffer createDataBuffer()
          創建一個對應於此 SinglePixelPackedSampleModel 的 DataBuffer。
 SampleModel createSubsetSampleModel(int[] bands)
          創建一個新 SinglePixelPackedSampleModel,使其具有此 SinglePixelPackedSampleModel 的 band 子集。
 boolean equals(Object o)
          指示其他某個物件是否與此物件「相等」。
 int[] getBitMasks()
          返回所有 band 的位遮罩碼。
 int[] getBitOffsets()
          返回表示所有 band 像素的資料陣列元素中的位偏移量。
 Object getDataElements(int x, int y, Object obj, DataBuffer data)
          返回 TransferType 型別基本陣列中單個像素的資料。
 int getNumDataElements()
          返回通過 getDataElements 和 setDataElements 方法傳輸一個像素所需的資料元素數。
 int getOffset(int x, int y)
          返回像素 (x,y)(在資料陣列元素中)的偏移量。
 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) 處像素的樣本。
 int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
          在一個 int 陣列中返回指定 band 中對應於指定像素矩形的樣本,每個陣列元素對應一個樣本。
 int[] getSampleSize()
          返回所有 band 的每樣本位數。
 int getSampleSize(int band)
          返回指定 band 的每樣本位數。
 int getScanlineStride()
          返回此 SinglePixelPackedSampleModel 的掃瞄行間距。
 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 陣列設置像素矩形的所有樣本,該陣列為每個陣列元素包含一個樣本。
 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 中對應於指定像素矩形的樣本,該陣列為每個陣列元素包含一個樣本。
 
從類別 java.awt.image.SampleModel 繼承的方法
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSample, setSample, setSamples, setSamples
 
從類別 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

SinglePixelPackedSampleModel

public SinglePixelPackedSampleModel(int dataType,
                                    int w,
                                    int h,
                                    int[] bitMasks)
建構一個具有 bitMasks.length band 的 SinglePixelPackedSampleModel。每個樣本都存儲在資料陣列元素中其對應位遮罩碼的位置處。每個位遮罩碼必須是連續的,遮罩碼不得重疊。

參數:
dataType - 存儲樣本使用的資料型別。
w - 所描述的圖像資料區域的寬度(以像素為單位)。
h - 所描述的圖像資料區域的高度(以像素為單位)。
bitMasks - 所有 band 的位遮罩碼。
拋出:
IllegalArgumentException - 如果 dataType 不是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT

SinglePixelPackedSampleModel

public SinglePixelPackedSampleModel(int dataType,
                                    int w,
                                    int h,
                                    int scanlineStride,
                                    int[] bitMasks)
建構一個 SinglePixelPackedSampleModel,使其具有 bitMasks.length band,且掃瞄行間距等於 scanlineStride 資料陣列元素。每個樣本都存儲在資料陣列元素中其對應位遮罩碼的位置處。每個位遮罩碼必須是連續的,遮罩碼不得重疊。

參數:
dataType - 存儲樣本使用的資料型別。
w - 所描述的圖像資料區域的寬度(以像素為單位)。
h - 所描述的圖像資料區域的高度(以像素為單位)。
scanlineStride - 圖像資料的行間距。
bitMasks - 所有 band 的位遮罩碼。
拋出:
IllegalArgumentException - 如果 wh 不大於 0
IllegalArgumentException - 如果 bitMask 中的任何遮罩碼不連續
IllegalArgumentException - 如果 dataType 不是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
方法詳細資訊

getNumDataElements

public int getNumDataElements()
返回通過 getDataElements 和 setDataElements 方法傳輸一個像素所需的資料元素數。對於 SinglePixelPackedSampleModel,此元素數為 1。

指定者:
類別 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()

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
創建一個具有指定寬度和高度的新 SinglePixelPackedSampleModel。新 SinglePixelPackedSampleModel 的存儲資料型別和位遮罩碼與此 SinglePixelPackedSampleModel 相同。

指定者:
類別 SampleModel 中的 createCompatibleSampleModel
參數:
w - 得到的 SampleModel 的寬度
h - 得到的 SampleModel 的高度
返回:
具有指定寬度和高度的 SinglePixelPackedSampleModel
拋出:
IllegalArgumentException - 如果 wh 不大於 0

createDataBuffer

public DataBuffer createDataBuffer()
創建一個對應於此 SinglePixelPackedSampleModel 的 DataBuffer。DataBuffer 的資料型別和大小將與此 SinglePixelPackedSampleModel 一致。DataBuffer 只有一個存儲單元。

指定者:
類別 SampleModel 中的 createDataBuffer
返回:
對應於此 SampleModelDataBuffer

getSampleSize

public int[] getSampleSize()
返回所有 band 的每樣本位數。

指定者:
類別 SampleModel 中的 getSampleSize
返回:
所有 band 樣本的大小。

getSampleSize

public int getSampleSize(int band)
返回指定 band 的每樣本位數。

指定者:
類別 SampleModel 中的 getSampleSize
參數:
band - 指定的 band
返回:
指定 band 樣本的大小。

getOffset

public int getOffset(int x,
                     int y)
返回像素 (x,y)(在資料陣列元素中)的偏移量。包含像素 x,y 的資料元素可以使用 SinglePixelPackedSampleModel sppsm 從 DataBuffer data 中檢索:
        data.getElem(sppsm.getOffset(x, y));
 

參數:
x - 指定像素的 X 坐標
y - 指定像素的 Y 坐標
返回:
指定像素的偏移量。

getBitOffsets

public int[] getBitOffsets()
返回表示所有 band 像素的資料陣列元素中的位偏移量。

返回:
表示所有 band 像素的位偏移量。

getBitMasks

public int[] getBitMasks()
返回所有 band 的位遮罩碼。

返回:
所有 band 的位遮罩碼。

getScanlineStride

public int getScanlineStride()
返回此 SinglePixelPackedSampleModel 的掃瞄行間距。

返回:
SinglePixelPackedSampleModel 的掃瞄行間距。

createSubsetSampleModel

public SampleModel createSubsetSampleModel(int[] bands)
創建一個新 SinglePixelPackedSampleModel,使其具有此 SinglePixelPackedSampleModel 的 band 子集。新 SinglePixelPackedSampleModel 可以使用現有 SinglePixelPackedSampleModel 可使用的 DataBuffer。新 SinglePixelPackedSampleModel/DataBuffer 組合將表示一個圖像,該圖像具有原始 SinglePixelPackedSampleModel/DataBuffer 組合的 band 子集。

指定者:
類別 SampleModel 中的 createSubsetSampleModel
參數:
bands - 此 SampleModel 的 band 子集
返回:
具有此 SampleModel band 子集的 SampleModel
拋出:
RasterFormatException - 如果 band 參數的長度大於樣本模型中 band 的數量。

getDataElements

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

以下程式碼說明了如何將一個像素的資料從 DataBuffer db1(其存儲佈局由 SinglePixelPackedSampleModel sppsm1 描述)傳輸到 DataBuffer db2(其存儲佈局由 SinglePixelPackedSampleModel sppsm2 描述)。該傳輸通常比使用 getPixel/setPixel 更有效。

             SinglePixelPackedSampleModel sppsm1, sppsm2;
             DataBufferInt db1, db2;
             sppsm2.setDataElements(x, y, sppsm1.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,則 obj 是接收返回像素資料的基本陣列。
data - 套件含圖像資料的 DataBuffer。
返回:
指定像素的資料。
另請參見:
setDataElements(int, int, Object, DataBuffer)

getPixel

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

覆寫:
類別 SampleModel 中的 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。

覆寫:
類別 SampleModel 中的 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。

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

getSamples

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

覆寫:
類別 SampleModel 中的 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 中單個像素的資料。對於 SinglePixelPackedSampleModel,只有陣列的第一個元素將保存有效值,且陣列型別必須與 SinglePixelPackedSampleModel 的存儲資料型別相同。

以下程式碼說明了如何將一個像素的資料從 DataBuffer db1(其存儲佈局由 SinglePixelPackedSampleModel sppsm1 描述)傳輸到 DataBuffer db2(其存儲佈局由 SinglePixelPackedSampleModel sppsm2 描述)。該傳輸通常比使用 getPixel/setPixel 更有效。

             SinglePixelPackedSampleModel sppsm1, sppsm2;
             DataBufferInt db1, db2;
             sppsm2.setDataElements(x, y, sppsm1.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)

setPixel

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)

setPixels

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

覆寫:
類別 SampleModel 中的 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。

指定者:
類別 SampleModel 中的 setSample
參數:
x - 像素位置的 X 坐標。
y - 像素位置的 Y 坐標。
b - 要設置的 band。
s - int 形式的輸入樣本。
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 中對應於指定像素矩形的樣本,該陣列為每個陣列元素包含一個樣本。如果坐標不在邊界內,則拋出 ArrayIndexOutOfBoundsException。

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

equals

public boolean equals(Object o)
從類別 Object 複製的描述
指示其他某個物件是否與此物件「相等」。

equals 方法在非空(null)物件參考上實作相等關係:

Object 類別的 equals 方法實作物件上差別可能性最大的相等關係;即,對於任何非空(null)參考值 xy,當且僅當 xy 參考同一個物件時,此方法才返回 truex == y 具有值 true)。

注意:當此方法被覆寫時,通常有必要覆寫 hashCode 方法,以維護 hashCode 方法的常規協定,該協定宣告相等物件必須具有相等的雜湊碼。

覆寫:
類別 Object 中的 equals
參數:
o - 要與之比較的參考物件。
返回:
如果此物件與 obj 參數相同,則返回 true;否則返回 false
另請參見:
Object.hashCode(), Hashtable

hashCode

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

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