JavaTM 2 Platform
Standard Ed. 6

java.awt.image
類別 ComponentColorModel

java.lang.Object
  繼承者 java.awt.image.ColorModel
      繼承者 java.awt.image.ComponentColorModel
所有已實作的介面:
Transparency

public class ComponentColorModel
extends ColorModel

使用像素值將顏色和 alpha 資訊表示為獨立樣本的 ColorModel 類別,該類別以獨立的資料元素存儲每個樣本。此類別可以與任意 ColorSpace 一起使用。像素值中的顏色樣本數必須與 ColorSpace 中的顏色份量數相同。可以有單個 alpha 樣本。

對於那些使用 transferType 型別的基本陣列像素表示形式的方法,陣列的長度與顏色和 alpha 樣本數相同。顏色樣本存儲在後跟 alpha 樣本(如果存在)的陣列的前面。顏色樣本的順序由 ColorSpace 指定。通常,此順序反映顏色空間型別的名稱。例如,對於 TYPE_RGB,索引 0 對應於紅色,索引 1 對應於綠色,索引 2 對應於藍色。

出於顯示或處理目的而執行的像素值到顏色/alpha 份量的轉換是基於從樣本到份量的一一對應關係進行的。由實例表示的像素樣本值可以是有符號的或無符號的,也可以是整型或者 float 或 double 型別(有關細節請參見以下內容),具體取決於用來創建 ComponentColorModel 實例的傳輸型別。從樣本值到標準化顏色/alpha 份量的轉換必須遵循一定的規則。對於 float 和 double 樣本,轉換為一種標識,即標準化份量值等於相應的樣本值。對於整數樣本,轉換應該只是簡單縮放和偏移,其中每個份量的縮放和偏移常數可以有所不同。應用縮放和偏移常數的結果是形成一組顏色/alpha 份量值,這樣可以保證這些值落到一定範圍內。通常,顏色份量的範圍將為由 ColorSpace 類別的 getMinValuegetMaxValue 方法定義的範圍。alpha 份量的範圍應為從 0.0 到 1.0。

用傳輸型別 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT 創建的 ComponentColorModel 的實例具有被視為無符號整數值的像素樣本值。像素值的顏色或 alpha 樣本中的位數可能不同於傳遞到 ComponentColorModel(ColorSpace, int[], boolean, boolean, int, int) 建構子的相應顏色或 alpha 樣本的位數。在這種情況下,此類別假定樣本值的 n 位最低有效位保存份量值,其中 n 為傳遞到建構子的份量的有效位數。它還假定樣本值中所有較高位都為零。因此,樣本值的範圍為 0 到 2n - 1。此類別將這些樣本值映射到標準化顏色份量值,以使 0 映射到從每個份量的 ColorSpacegetMinValue 方法得到的值,2n - 1 映射到從 getMaxValue 得到的值。創建具有不同顏色樣本映射的 ComponentColorModel 需要子類別化此類別,並覆寫 getNormalizedComponents(Object, float[], int) 方法。alpha 樣本的映射始終將 0 映射到 0.0,將 2n - 1 映射到 1.0。

對於帶有無符號樣本值的實例,僅當兩個條件都具備時,非標準化的顏色/alpha 份量表示形式才受支持。首先,樣本值 0 必須映射到標準化份量值 0.0,樣本值 2n - 1 映射到 1.0。其次,ColorSpace 的所有顏色份量的最小值/最大取值範圍必須為 0.0 到 1.0 之間。在這種情況下,份量表示形式為相應樣本的 n 位最低有效位。因此,每個份量都為介於 0 和 2n - 1 之間的無符號整數值,其中 n 為特定份量的有效位數。如果未滿足這些條件,則採用非標準化份量參數的任何方法都將拋出 IllegalArgumentException

用傳輸型別 DataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE 創建的 ComponentColorModel 的實例具有被視為有符號的 short、float 或 double 值的像素樣本值。此類別實例不支持非標準化的顏色/alpha 份量表示形式,因此將此類別表示形式用作參數在這些實例的其中之一上調用任何方法都將拋出 IllegalArgumentException。此類別實例的標準化份量的取值範圍取決於傳輸型別,如下所示:對於 float 樣本,則為 float 資料型別的完整範圍;對於 double 樣本,則為 float 資料型別(通過將 double 強制轉換為 float 得到)的完整範圍;對於 short 樣本,大致為 -maxVal 到 +maxVal,其中 maxVal 為 ColorSpace 的每份量最大值(-32767 映射到 -maxVal,0 映射到 0.0,32767 映射到 +maxVal)。通過覆寫 getNormalizedComponents(Object, float[], int) 方法,子類別可以覆寫 short 樣本值到標準化份量值的縮放。對於 float 和 double 樣本,標準化份量值被視為等於相應的樣本值,子類別不應試圖添加這些傳輸型別的任何非標識縮放。

用傳輸型別 DataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE 創建的 ComponentColorModel 的實例使用所有樣本值的所有位。因此,使用 DataBuffer.TYPE_SHORT 時所有顏色/alpha 份量都有 16 位,使用 DataBuffer.TYPE_FLOAT 時都有 32,使用 DataBuffer.TYPE_DOUBLE 時都有 64 位。當建構子的 ComponentColorModel(ColorSpace, int[], boolean, boolean, int, int) 形式與這些傳輸型別之一一起使用時,位元陣列參數將被忽略。

可能將不能合理解釋的顏色/alpha 樣本值視為用於呈現的份量值。當子類別化 ComponentColorModel 以覆寫無符號樣本值到標準化顏色份量值的映射時,或當使用某一範圍之外的有符號樣本值時,此現象可能發生。(例如,將 alpha 份量指定為範圍 0 到 32767(即標準化範圍 0.0 到 1.0)之外的有符號 short 值可能導致不可預料的結果)。應用程序負責在呈現之前適當縮放像素資料,以使顏色份量落在 ColorSpace(使用 ColorSpace 類別的 getMinValuegetMaxValue 方法得到)的標準化範圍內,並使 alpha 份量位於 0.0 和 1.0 之間。如果顏色或 alpha 份量值超出這些範圍,則呈現結果是不確定的。

使用單個 int 像素表示形式的方法拋出 IllegalArgumentException,除非 ComponentColorModel 的份量數為 1 且份量值無符號,即使用 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT 的傳輸型別的單個顏色份量,沒有 alpha 份量。

ComponentColorModel 可以與 ComponentSampleModelBandedSampleModelPixelInterleavedSampleModel 一起使用,以建構 BufferedImage

另請參見:
ColorModel, ColorSpace, ComponentSampleModel, BandedSampleModel, PixelInterleavedSampleModel, BufferedImage

欄位摘要
 
從類別 java.awt.image.ColorModel 繼承的欄位
pixel_bits, transferType
 
從介面 java.awt.Transparency 繼承的欄位
BITMASK, OPAQUE, TRANSLUCENT
 
建構子摘要
ComponentColorModel(ColorSpace colorSpace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
          根據指定參數建構 ComponentColorModel
ComponentColorModel(ColorSpace colorSpace, int[] bits, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
          根據指定參數建構 ComponentColorModel
 
方法摘要
 ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
          強制使光柵資料與在 isAlphaPremultiplied 變數中指定的狀態比對,假定當前該資料已由此 ColorModel 正確描述。
 SampleModel createCompatibleSampleModel(int w, int h)
          用指定寬度和高度創建的 SampleModel,具有與此 ColorModel 相容的資料佈局。
 WritableRaster createCompatibleWritableRaster(int w, int h)
          用指定寬度和高度創建的 WritableRaster,具有與此 ColorModel 相容的資料佈局 (SampleModel)。
 boolean equals(Object obj)
          將此顏色模型與其他模型進行相等性比較。
 int getAlpha(int pixel)
          返回指定像素(縮放範圍從 0 到 255)的 alpha 份量。
 int getAlpha(Object inData)
          返回指定像素(在 0 到 255 之間縮放)的 alpha 份量。
 WritableRaster getAlphaRaster(WritableRaster raster)
          返回表示某圖像(從輸入 Raster 提取)的 alpha 通道的 Raster
 int getBlue(int pixel)
          返回指定像素的藍色份量,指定像素在預設的 RGB ColorSpace(即 sRGB)中縮放範圍是 0 到 255。
 int getBlue(Object inData)
          返回指定像素的藍顏色份量,指定像素在預設的 RGB ColorSpace(即 sRGB)中縮放範圍是 0 到 255。
 int[] getComponents(int pixel, int[] components, int offset)
          返回在 ColorModel 中已給定像素的非標準化顏色/alpha 份量。
 int[] getComponents(Object pixel, int[] components, int offset)
          返回在此 ColorModel 中已給定像素的非標準化顏色/alpha 份量的陣列。
 int getDataElement(float[] normComponents, int normOffset)
          在已給定標準化顏色/alpha 份量的陣列的情況下,返回以 int 型別表示在此 ColorModel 中的像素值。
 int getDataElement(int[] components, int offset)
          返回在 ColorModel 中表示為 int 的像素值(已給定非標準化顏色/alpha 份量的陣列)。
 Object getDataElements(float[] normComponents, int normOffset, Object obj)
          在已給定標準化顏色/alpha 份量的陣列的情況下,返回此 ColorModel 中像素的資料元素陣列表示形式。
 Object getDataElements(int[] components, int offset, Object obj)
          在已給定非標準化顏色/alpha 份量的情況下,返回此 ColorModel 中像素的資料元素陣列表示形式。
 Object getDataElements(int rgb, Object pixel)
          在預設 RGB 顏色模型中給定整數像素的表示形式的情況下,返回此 ColorModel 中像素的資料元素陣列的表示形式。
 int getGreen(int pixel)
          返回指定像素的綠色份量,指定像素在預設的 RGB ColorSpace(即 sRGB)中縮放範圍是 0 到 255。
 int getGreen(Object inData)
          返回指定像素的綠色份量,指定像素在預設的 RGB ColorSpace(即 sRGB)中縮放範圍是 0 到 255。
 float[] getNormalizedComponents(int[] components, int offset, float[] normComponents, int normOffset)
          在給定標準化份量陣列的情況下,返回以標準化形式存在的所有顏色/alpha 份量的陣列。
 float[] getNormalizedComponents(Object pixel, float[] normComponents, int normOffset)
          返回已在 ColorModel 中給定了像素的標準化形式顏色/alpha 份量的陣列。
 int getRed(int pixel)
          返回指定像素的紅色份量,指定像素在預設的 RGB ColorSpace(即 sRGB)中縮放範圍是 0 到 255。
 int getRed(Object inData)
          返回指定像素的紅色份量,指定像素在預設的 RGB ColorSpace(即 sRGB)中縮放範圍是 0 到 255。
 int getRGB(int pixel)
          返回預設的 RGB 顏色模型格式中像素的顏色/alpha 份量。
 int getRGB(Object inData)
          返回預設的 RGB 顏色模型格式中的像素的顏色/alpha 份量。
 int[] getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset)
          在已給定標準化份量陣列的情況下,返回以非標準化形式存在的所有顏色/alpha 份量的陣列。
 boolean isCompatibleRaster(Raster raster)
          如果 raster 與此 ColorModel 相容,則返回 true;如果不相容,則返回 false。
 boolean isCompatibleSampleModel(SampleModel sm)
          檢查指定 SampleModel 是否與此 ColorModel 相容。
 
從類別 java.awt.image.ColorModel 繼承的方法
finalize, getColorSpace, getComponentSize, getComponentSize, getNumColorComponents, getNumComponents, getPixelSize, getRGBdefault, getTransferType, getTransparency, hasAlpha, hashCode, isAlphaPremultiplied, toString
 
從類別 java.lang.Object 繼承的方法
clone, getClass, notify, notifyAll, wait, wait, wait
 

建構子詳細資訊

ComponentColorModel

public ComponentColorModel(ColorSpace colorSpace,
                           int[] bits,
                           boolean hasAlpha,
                           boolean isAlphaPremultiplied,
                           int transparency,
                           int transferType)
根據指定參數建構 ComponentColorModel。顏色份量將在指定的 ColorSpace 中。受支持的傳輸型別為 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE。如果不為 null,則 bits 陣列指定每個顏色和 alpha 份量的有效位數,並且如果像素值中不存在 alpha 資訊,則其長度至少應該是 ColorSpace 中份量數,如果存在 alpha 資訊,則其長度大於此數。當 transferTypeDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE 時,忽略 bits 陣列參數。hasAlpha 指示是否存在 alpha 資訊。如果 hasAlpha 為 true,則布林值 isAlphaPremultiplied 指定如何解釋像素值中的顏色和 alpha 樣本。如果布林值為 true,則假定顏色樣本已與 alpha 樣本相乘。transparency 指定可以由此顏色模型表示的 alpha 值。可以接受的 transparency 值為 OPAQUEBITMASKTRANSLUCENTtransferType 是用於表示像素值的基本陣列的型別。

參數:
colorSpace - 與此顏色模型關聯的 ColorSpace
bits - 每個份量的有效位數。可以為 null,在這種情況下,所有份量樣本的所有位都將有效。如果 transferType 為 DataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE 之一,則忽略,在這種情況下,所有份量樣本的所有位都將有效。
hasAlpha - 如果為 true,則此顏色模型支持 alpha。
isAlphaPremultiplied - 如果為 true,則 alpha 預乘的。
transparency - 指定可以由此顏色模型表示的 alpha 值。
transferType - 指定用於表示像素值的基本陣列的型別。
拋出:
IllegalArgumentException - 如果 bits 陣列參數不為 null,則其長度小於顏色和 alpha 份量數,且 transferType 為 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT 之一。
IllegalArgumentException - 如果 transferType 不為 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE 之一。
另請參見:
ColorSpace, Transparency

ComponentColorModel

public ComponentColorModel(ColorSpace colorSpace,
                           boolean hasAlpha,
                           boolean isAlphaPremultiplied,
                           int transparency,
                           int transferType)
根據指定參數建構 ComponentColorModel。顏色份量將在指定的 ColorSpace 中。受支持的傳輸型別為 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE。每個顏色和 alpha 份量的有效位數都分別為 8、16、32、16、32 或 64。顏色份量數為 ColorSpace 中的份量數。如果 hasAlphatrue,則存在 alpha 份量。如果 hasAlpha 為 true,則布林值 isAlphaPremultiplied 指定如何解釋像素值中的顏色和 alpha 樣本。如果布林值為 true,則假定顏色樣本已與 alpha 樣本相乘。transparency 指定可以由此顏色模型表示的 alpha 值。可以接受的 transparency 值為 OPAQUEBITMASKTRANSLUCENTtransferType 是用於表示像素值的基本陣列的型別。

參數:
colorSpace - 與此顏色模型關聯的 ColorSpace
hasAlpha - 如果為 true,則此顏色模型支持 alpha。
isAlphaPremultiplied - 如果為 true,則 alpha 預乘的。
transparency - 指定可以由此顏色模型表示的 alpha 值。
transferType - 指定用於表示像素值的基本陣列的型別。
拋出:
IllegalArgumentException - 如果 transferType 不為 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE 之一。
從以下版本開始:
1.4
另請參見:
ColorSpace, Transparency
方法詳細資訊

getRed

public int getRed(int pixel)
返回指定像素的紅色份量,指定像素在預設的 RGB ColorSpace(即 sRGB)中縮放範圍是 0 到 255。如有必要,可進行顏色轉換。將像素值指定為 int。返回的值為非預先乘得的值。如果與 alpha 預先相乘,此方法將在返回值(如果 alpha 值為 0,則紅色值將為 0)之前將其除出來。

指定者:
類別 ColorModel 中的 getRed
參數:
pixel - 要從中獲取紅色份量的像素。
返回:
指定像素(int 型別)的紅色份量。
拋出:
IllegalArgumentException - 如果此 ColorModel 中有一個以上的份量。
IllegalArgumentException - 如果此 ColorModel 的份量值為有符號的。

getGreen

public int getGreen(int pixel)
返回指定像素的綠色份量,指定像素在預設的 RGB ColorSpace(即 sRGB)中縮放範圍是 0 到 255。如有必要,可進行顏色轉換。將像素值指定為 int。返回的值為非預先乘得的值。如果與 alpha 預先相乘,此方法將在返回值(如果 alpha 值為 0,則綠色值將為 0)之前將其除出來。

指定者:
類別 ColorModel 中的 getGreen
參數:
pixel - 要從中獲取綠色份量的像素。
返回:
指定像素(int 型別)的綠色份量。
拋出:
IllegalArgumentException - 如果此 ColorModel 中有一個以上的份量。
IllegalArgumentException - 如果此 ColorModel 的份量值為有符號的。

getBlue

public int getBlue(int pixel)
返回指定像素的藍色份量,指定像素在預設的 RGB ColorSpace(即 sRGB)中縮放範圍是 0 到 255。如有必要,可進行顏色轉換。將像素值指定為 int。返回的值為非預先乘得的值。如果與 alpha 預先相乘,此方法將在返回值(如果 alpha 值為 0,則藍色值將為 0)之前將其除出來。

指定者:
類別 ColorModel 中的 getBlue
參數:
pixel - 要從中獲取藍色份量的像素。
返回:
指定像素(int 型別)的藍色份量。
拋出:
IllegalArgumentException - 如果此 ColorModel 中有一個以上的份量。
IllegalArgumentException - 如果此 ColorModel 的份量值為有符號的。

getAlpha

public int getAlpha(int pixel)
返回指定像素(縮放範圍從 0 到 255)的 alpha 份量。像素值指定為 int。

指定者:
類別 ColorModel 中的 getAlpha
參數:
pixel - 要從中獲取 alpha 份量的像素。
返回:
指定像素(int 型別)的 alpha 份量。
拋出:
IllegalArgumentException - 如果此 ColorModel 中有一個以上的份量。
IllegalArgumentException - 如果此 ColorModel 的份量值為有符號的。

getRGB

public int getRGB(int pixel)
返回預設的 RGB 顏色模型格式中像素的顏色/alpha 份量。如有必要,可進行顏色轉換。返回的值是非預乘格式。如果與 alpha 預先相乘,此方法會將其從顏色份量(如果 alpha 值為 0,則顏色值為 0)中除出來。

覆寫:
類別 ColorModel 中的 getRGB
參數:
pixel - 要從中獲取顏色/alpha 份量的像素。
返回:
指定像素(int 型別)的顏色/alpha 份量。
拋出:
IllegalArgumentException - 如果此 ColorModel 中有一個以上的份量。
IllegalArgumentException - 如果此 ColorModel 的份量值為有符號的。
另請參見:
ColorModel.getRGBdefault()

getRed

public int getRed(Object inData)
返回指定像素的紅色份量,指定像素在預設的 RGB ColorSpace(即 sRGB)中縮放範圍是 0 到 255。如有必要,可進行顏色轉換。pixel 值由作為物件參考而傳入的型別 transferType 的資料元素的陣列指定。返回的值為非預先乘得的值。如果與 alpha 預先相乘,此方法將在返回值(如果 alpha 值為 0,則紅色值將為 0)之前將其除出來。因為 ComponentColorModel 可以子類別化,所以子類別可以繼承此方法的實作,並且如果不覆寫此方法,則當它們使用不受支持的 transferType 時,將拋出異常。

覆寫:
類別 ColorModel 中的 getRed
參數:
inData - 要從中獲取紅色份量(由型別 transferType 的資料元素的陣列指定)的像素。
返回:
指定像素(int 型別)的紅色份量。
拋出:
ClassCastException - 如果 inData 不為型別 transferType 的基本陣列。
ArrayIndexOutOfBoundsException - 如果 inData 不是特別大,不能保存此 ColorModel 的像素值。
UnsupportedOperationException - 如果此 ComponentColorModel 的傳輸型別不為以下受支持的傳輸型別之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE

getGreen

public int getGreen(Object inData)
返回指定像素的綠色份量,指定像素在預設的 RGB ColorSpace(即 sRGB)中縮放範圍是 0 到 255。如有必要,可進行顏色轉換。pixel 值由作為物件參考而傳入的型別 transferType 的資料元素的陣列指定。返回的值是一個非預先乘得的值。如果與 alpha 預先相乘,此方法將在返回值(如果 alpha 值為 0,則綠色值將為 0)之前將其除出來。因為 ComponentColorModel 可以子類別化,所以子類別可以繼承此方法的實作,並且如果不覆寫此方法,則當它們使用不受支持的 transferType 時,將拋出異常。

覆寫:
類別 ColorModel 中的 getGreen
參數:
inData - 要從中獲取綠色份量(由型別 transferType 的資料元素的陣列指定)的像素。
返回:
指定像素(int 型別)的綠色份量。
拋出:
ClassCastException - 如果 inData 不為型別 transferType 的基本陣列。
ArrayIndexOutOfBoundsException - 如果 inData 不是特別大,不能保存此 ColorModel 的像素值。
UnsupportedOperationException - 如果此 ComponentColorModel 的傳輸型別不為以下受支持的傳輸型別之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE

getBlue

public int getBlue(Object inData)
返回指定像素的藍顏色份量,指定像素在預設的 RGB ColorSpace(即 sRGB)中縮放範圍是 0 到 255。如有必要,可進行顏色轉換。pixel 值由作為物件參考而傳入的型別 transferType 的資料元素的陣列指定。返回的值是一個非預先乘得的值。如果與 alpha 預先相乘,此方法將在返回值(如果 alpha 值為 0,則藍色值將為 0)之前將其除出來。因為 ComponentColorModel 可以子類別化,所以子類別可以繼承此方法的實作,並且如果不覆寫此方法,則當它們使用不受支持的 transferType 時,將拋出異常。

覆寫:
類別 ColorModel 中的 getBlue
參數:
inData - 要從中獲取藍色份量(由型別 transferType 的資料元素的陣列指定)的像素。
返回:
指定像素(int 型別)的藍色份量。
拋出:
ClassCastException - 如果 inData 不為型別 transferType 的基本陣列。
ArrayIndexOutOfBoundsException - 如果 inData 不是特別大,不能保存此 ColorModel 的像素值。
UnsupportedOperationException - 如果此 ComponentColorModel 的傳輸型別不為以下受支持的傳輸型別之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE

getAlpha

public int getAlpha(Object inData)
返回指定像素(在 0 到 255 之間縮放)的 alpha 份量。像素值由作為物件參考傳入的型別 transferType 的資料元素的陣列指定。因為 ComponentColorModel 可以子類別化,所以子類別可以繼承此方法的實作,並且如果不覆寫此方法,則當它們使用不受支持的 transferType 時,將拋出異常。

覆寫:
類別 ColorModel 中的 getAlpha
參數:
inData - 要從中獲取 alpha 份量(由型別 transferType 的資料元素的陣列指定)的像素。
返回:
指定像素(int 型別)的 alpha 份量。
拋出:
ClassCastException - 如果 inData 不為型別 transferType 的基本陣列。
ArrayIndexOutOfBoundsException - 如果 inData 不是特別大,不能保存此 ColorModel 的像素值。
UnsupportedOperationException - 如果此 ComponentColorModel 的傳輸型別不為以下受支持的傳輸型別之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE

getRGB

public int getRGB(Object inData)
返回預設的 RGB 顏色模型格式中的像素的顏色/alpha 份量。如有必要,可進行顏色轉換。像素值由作為一個物件參考而傳入的 transferType 型別的資料元素陣列指定。返回的值是非預乘格式。如果與 alpha 預先相乘,此方法會將其從顏色份量(如果 alpha 值為 0,則顏色值為 0)中除出來。因為 ComponentColorModel 可以子類別化,所以子類別可以繼承此方法的實作,並且如果不覆寫此方法,則當它們使用不受支持的 transferType 時,將拋出異常。

覆寫:
類別 ColorModel 中的 getRGB
參數:
inData - 要從中獲取顏色/alpha 份量(由型別 transferType 的資料元素的陣列指定)的像素。
返回:
指定像素(int 型別)的顏色/alpha 份量。
拋出:
ClassCastException - 如果 inData 不為型別 transferType 的基本陣列。
ArrayIndexOutOfBoundsException - 如果 inData 不是特別大,不能保存此 ColorModel 的像素值。
UnsupportedOperationException - 如果此 ComponentColorModel 的傳輸型別不為以下受支持的傳輸型別之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE
另請參見:
ColorModel.getRGBdefault()

getDataElements

public Object getDataElements(int rgb,
                              Object pixel)
在預設 RGB 顏色模型中給定整數像素的表示形式的情況下,返回此 ColorModel 中像素的資料元素陣列的表示形式。然後可以將此陣列傳遞給 WritableRaster 物件的 setDataElements 方法。如果 pixel 參數為 null,則分派新陣列。因為 ComponentColorModel 可以子類別化,所以子類別可以繼承此方法的實作,並且如果不覆寫此方法,則當它們使用不受支持的 transferType 時,將拋出異常。

覆寫:
類別 ColorModel 中的 getDataElements
參數:
rgb - RGB 顏色模型中像素的整數表示形式
pixel - 指定像素
返回:
ColorModel 中像素的資料元素陣列表示形式。
拋出:
ClassCastException - 如果 pixel 不為 null 且不為型別 transferType 的基本陣列。
ArrayIndexOutOfBoundsException - 如果 pixel 不是特別大,不能保存此 ColorModel 的像素值。
UnsupportedOperationException - 如果此 ComponentColorModel 的傳輸型別不為以下受支持的傳輸型別之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE
另請參見:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

getComponents

public int[] getComponents(int pixel,
                           int[] components,
                           int offset)
返回在 ColorModel 中已給定像素的非標準化顏色/alpha 份量。如果此 ColorModel 的份量值不便於以非標準化形式表示,則返回 IllegalArgumentException。將顏色/alpha 份量存儲在以 offset 開頭的 components 陣列中,即便此方法已分派了陣列也是如此。

覆寫:
類別 ColorModel 中的 getComponents
參數:
pixel - 指定為整數的像素值。
components - 在其中存儲非標準化顏色/alpha 份量的整數陣列。如果 components 陣列為 null,則分派新陣列。
offset - components 陣列的偏移量。
返回:
份量陣列。
拋出:
IllegalArgumentException - 如果此 ColorModel 中有一個以上的份量。
IllegalArgumentException - 如果此 ColorModel 不支持非標準化形式
ArrayIndexOutOfBoundsException - 如果 components 陣列不為 null 且不是特別大,不能保存所有顏色和 alpha 份量(以偏移量開頭)。

getComponents

public int[] getComponents(Object pixel,
                           int[] components,
                           int offset)
返回在此 ColorModel 中已給定像素的非標準化顏色/alpha 份量的陣列。像素值由作為一個物件參考而傳入的 transferType 型別的資料元素陣列指定。如果此 ColorModel 的份量值不便於以非標準化形式表示,則返回 IllegalArgumentException。將顏色/alpha 份量存儲在以 offset 開頭的 components 陣列中,即便此方法已分派了陣列也是如此。因為 ComponentColorModel可以子類別化,所以子類別可以繼承此方法的實作,並且如果不覆寫此方法,則在其使用不受支持的 transferType 時此方法可能拋出異常。

覆寫:
類別 ColorModel 中的 getComponents
參數:
pixel - 由型別 transferType 的資料元素的陣列指定的像素值。
components - 在其中存儲非標準化顏色/alpha 份量的整數陣列。如果 components 陣列為 null,則分派新陣列。
offset - components 陣列的偏移量。
返回:
components 陣列。
拋出:
IllegalArgumentException - 如果此 ComponentColorModel 不支持非標準化形式
UnsupportedOperationException - 在某些情況下,如果此 ComponentColorModel 的傳輸型別不為以下傳輸型別之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
ClassCastException - 如果 pixel 不為型別 transferType 的基本陣列。
IllegalArgumentException - 如果 components 陣列不為 null 且不是特別大,不能保存所有顏色或 alpha 份量(以偏移量開頭),或者 pixel 不是特別大,不能保存此 ColorModel 的像素值。

getUnnormalizedComponents

public int[] getUnnormalizedComponents(float[] normComponents,
                                       int normOffset,
                                       int[] components,
                                       int offset)
在已給定標準化份量陣列的情況下,返回以非標準化形式存在的所有顏色/alpha 份量的陣列。非標準化份量為 0 和 2n - 1 之間的無符號整數值,其中 n 為特定份量的位數。標準化份量為 float 值,這些值介於此 ColorModelColorSpace 物件指定的每個份量的最小值和最大值之間。如果此 ColorModel 的顏色份量值不便於用非標準化形式表示,則拋出 IllegalArgumentException。如果 components 陣列為 null,則分派一個新陣列。components 陣列將返回。將顏色/alpha 份量存儲在以 offset 開頭的 components 陣列中,即便此方法已分派了陣列也是如此。如果 components 陣列不為 null 且不是特別大,不能以 offset 開頭保存所有顏色和 alpha 份量,則拋出 ArrayIndexOutOfBoundsException。如果 normComponents 陣列不是特別大,不能保存以 normOffset 開頭的所有顏色和 alpha 份量,則拋出 IllegalArgumentException

覆寫:
類別 ColorModel 中的 getUnnormalizedComponents
參數:
normComponents - 套件含標準化份量的陣列
normOffset - 開始檢索標準化份量的 normComponents 陣列的偏移量
components - 從 normComponents 檢索份量的陣列
offset - 在其處開始存儲 normComponentscomponents 的索引
返回:
包含非標準化顏色和 alpha 份量的陣列。
拋出:
IllegalArgumentException - 如果此 ComponentColorModel 不支持非標準化形式
IllegalArgumentException - 如果 normComponents 的長度減去 normOffset 小於 numComponents

getNormalizedComponents

public float[] getNormalizedComponents(int[] components,
                                       int offset,
                                       float[] normComponents,
                                       int normOffset)
在給定標準化份量陣列的情況下,返回以標準化形式存在的所有顏色/alpha 份量的陣列。非標準化份量為 0 和 2n - 1 之間的無符號整數值,其中 n 為特定份量的位數。標準化份量為 float 值,這些值介於此 ColorModelColorSpace 物件指定的每個份量的最小值和最大值之間。如果此 ColorModel 的顏色份量值不便於用非標準化形式表示,則拋出 IllegalArgumentException。如果 normComponents 陣列為 null,則分派一個新陣列。normComponents 陣列將返回。顏色/alpha 份量存儲在以 normOffset 開頭的 normComponents 陣列中,即使此方法已分派了陣列也如此。如果 normComponents 陣列不為 null,且不是特別大,不能保存所有顏色和 alpha 份量(以 normOffset 開頭),則拋出 ArrayIndexOutOfBoundsException。如果 components 陣列不是特別大,不能保存以 offset 開頭的所有顏色和 alpha 份量,則拋出 IllegalArgumentException

覆寫:
類別 ColorModel 中的 getNormalizedComponents
參數:
components - 套件含非標準化份量的陣列
offset - 開始檢索非標準化份量的 components 陣列的偏移量
normComponents - 收到標準化份量的陣列
normOffset - 在其處開始存儲標準化份量的 normComponents 的索引
返回:
包含標準化顏色和 alpha 份量的陣列。
拋出:
IllegalArgumentException - 如果此 ComponentColorModel 不支持非標準化形式

getDataElement

public int getDataElement(int[] components,
                          int offset)
返回在 ColorModel 中表示為 int 的像素值(已給定非標準化顏色/alpha 份量的陣列)。

覆寫:
類別 ColorModel 中的 getDataElement
參數:
components - 非標準化顏色/alpha 份量的陣列。
offset - components 陣列的偏移量。
返回:
表示為 int 的像素值。
拋出:
IllegalArgumentException - 如果此 ColorModel 中有一個以上的份量。
IllegalArgumentException - 如果此 ComponentColorModel 不支持非標準化形式

getDataElements

public Object getDataElements(int[] components,
                              int offset,
                              Object obj)
在已給定非標準化顏色/alpha 份量的情況下,返回此 ColorModel 中像素的資料元素陣列表示形式。然後可以將此陣列傳遞給 WritableRaster 物件的 setDataElements 方法。

覆寫:
類別 ColorModel 中的 getDataElements
參數:
components - 非標準化顏色/alpha 份量的陣列。
offset - components 陣列的整數偏移量。
obj - 在其中存儲像素的資料元素陣列表示形式的物件。如果 obj 變數為 null,則分派新陣列。如果 obj 不為 null,則其必須為型別 transferType 的基本陣列。如果 obj 不是特別大,不能保存此 ColorModel 的像素值,則拋出 ArrayIndexOutOfBoundsException。因為 ComponentColorModel 可以子類別化,所以子類別可以繼承此方法的實作,並且如果不覆寫此方法,則當它們使用不受支持的 transferType 時,將拋出異常。
返回:
ColorModel 中像素的資料元素陣列表示形式。
拋出:
IllegalArgumentException - 如果份量陣列不是特別大,不能保存所有以偏移量開頭的顏色和 alpha 份量。
ClassCastException - 如果 obj 不為 null 且不為型別 transferType 的基本陣列。
ArrayIndexOutOfBoundsException - 如果 obj 不是特別大,不能保存此 ColorModel 的像素值。
IllegalArgumentException - 如果此 ComponentColorModel 不支持非標準化形式
UnsupportedOperationException - 如果此 ComponentColorModel 的傳輸型別不為以下傳輸型別之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
另請參見:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

getDataElement

public int getDataElement(float[] normComponents,
                          int normOffset)
在已給定標準化顏色/alpha 份量的陣列的情況下,返回以 int 型別表示在此 ColorModel 中的像素值。如果此 ColorModel 的像素值不便於用單個 int,則此方法將拋出 IllegalArgumentException。如果 normComponents 陣列不是特別大,不能保存所有以 normOffset 開頭的顏色和 alpha 份量,則拋出 ArrayIndexOutOfBoundsException

覆寫:
類別 ColorModel 中的 getDataElement
參數:
normComponents - 標準化顏色和 alpha 份量的陣列
normOffset - 開始檢索顏色和 alpha 份量的 normComponents 的索引
返回:
ColorModel 中對應於指定份量的 int 像素值。
拋出:
IllegalArgumentException - 如果此 ColorModel 的像素值不便於用單個 int 表示
ArrayIndexOutOfBoundsException - 如果 normComponents 陣列不是特別大,不能保存以 normOffset 開頭的所有顏色和 alpha 份量
從以下版本開始:
1.4

getDataElements

public Object getDataElements(float[] normComponents,
                              int normOffset,
                              Object obj)
在已給定標準化顏色/alpha 份量的陣列的情況下,返回此 ColorModel 中像素的資料元素陣列表示形式。然後可以將此陣列傳遞給 WritableRaster 物件的 setDataElements 方法。如果 normComponents 陣列不是特別大,不能保存所有以 normOffset 開頭的顏色和 alpha 份量,則拋出 ArrayIndexOutOfBoundsException。如果 obj 變數為 null,則分派一個新陣列。如果 obj 不為 null,則它必須為型別 transferType 的基本陣列;否則將拋出 ClassCastException。如果 obj 不是特別大,不能保存此 ColorModel 的像素值,則拋出 ArrayIndexOutOfBoundsException

覆寫:
類別 ColorModel 中的 getDataElements
參數:
normComponents - 標準化顏色和 alpha 份量的陣列
normOffset - 開始檢索顏色和 alpha 份量的 normComponents 的索引
obj - 保存返回的像素的基本資料陣列
返回:
為像素的基本資料陣列表示形式的 Object
拋出:
ClassCastException - 如果 obj 不為型別 transferType 的基本陣列
ArrayIndexOutOfBoundsException - 如果 obj 不是特別大,不能保存此 ColorModel 的像素值,或者 normComponents 陣列不是特別大,不能保存以 normOffset 開頭的所有顏色和 alpha 份量
從以下版本開始:
1.4
另請參見:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

getNormalizedComponents

public float[] getNormalizedComponents(Object pixel,
                                       float[] normComponents,
                                       int normOffset)
返回已在 ColorModel 中給定了像素的標準化形式顏色/alpha 份量的陣列。像素值由作為物件參考傳入的型別 transferType 的資料元素的陣列指定。如果像素不為型別 transferType 的基本陣列,則拋出 ClassCastException。如果 pixel 不是特別大,不能保存此 ColorModel 的像素值,則拋出 ArrayIndexOutOfBoundsException。標準化份量為 float 值,這些值介於此 ColorModelColorSpace 物件指定的每個份量的最小值和最大值之間。如果 normComponents 陣列為 null,則分派一個新陣列。normComponents 陣列將返回。顏色/alpha 份量存儲在以 normOffset 開頭的 normComponents 陣列中,即使此方法已分派了陣列也如此。如果 normComponents 陣列不為 null,且不是特別大,不能保存所有顏色和 alpha 份量(以 normOffset 開頭),則拋出 ArrayIndexOutOfBoundsException

如果某子類別旨在以非預設方式將像素樣本值轉換為顏色份量值,則該子類別必須覆寫此方法。此類別實作的預設轉換在類別的註釋中描述。實作非預設轉換的任何子類別都必須遵循對此處定義的允許轉換的限制。

覆寫:
類別 ColorModel 中的 getNormalizedComponents
參數:
pixel - 指定像素
normComponents - 檢索標準化份量的陣列
normOffset - 在其處開始存儲標準化份量的 normComponents 陣列的偏移量
返回:
包含標準化顏色和 alpha 份量的陣列。
拋出:
ClassCastException - 如果 pixel 不為型別 transferType 的基本陣列
ArrayIndexOutOfBoundsException - 如果 normComponents 不是特別大,不能保存以 normOffset 開頭的所有顏色和 alpha 份量
ArrayIndexOutOfBoundsException - 如果 pixel 不是特別大,不能保存此 ColorModel 的像素值。
從以下版本開始:
1.4

coerceData

public ColorModel coerceData(WritableRaster raster,
                             boolean isAlphaPremultiplied)
強制使光柵資料與在 isAlphaPremultiplied 變數中指定的狀態比對,假定當前該資料已由此 ColorModel 正確描述。可以將顏色 raster 資料乘以或除以 alpha,如果該資料處於正確狀態,則不執行任何操作。如果需要對該資料強制比對,則此方法還將相應地返回一個帶有 isAlphaPremultiplied 標誌集的 ColorModel 的實例。因為 ColorModel 可以子類別化,所以子類別可以繼承此方法的實作,並且如果不覆寫此方法,則當它們使用不受支持的 transferType 時,將拋出異常。

覆寫:
類別 ColorModel 中的 coerceData
參數:
raster - WritableRaster 資料
isAlphaPremultiplied - 如果與 alpha 預乘,則返回 true;否則將返回 false
返回:
表示被強制比對資料的 ColorModel 物件。
拋出:
NullPointerException - 如果 rasternull 且需要資料強制。
UnsupportedOperationException - 如果此 ComponentColorModel 的傳輸型別不為以下受支持的傳輸型別之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE

isCompatibleRaster

public boolean isCompatibleRaster(Raster raster)
如果 raster 與此 ColorModel 相容,則返回 true;如果不相容,則返回 false。

覆寫:
類別 ColorModel 中的 isCompatibleRaster
參數:
raster - 用於測試相容性的 Raster
返回:
如果 raster 與此 ColorModel 相容,則返回 true;如果不相容,則返回 false

createCompatibleWritableRaster

public WritableRaster createCompatibleWritableRaster(int w,
                                                     int h)
用指定寬度和高度創建的 WritableRaster,具有與此 ColorModel 相容的資料佈局 (SampleModel)。

覆寫:
類別 ColorModel 中的 createCompatibleWritableRaster
參數:
w - 要創建的 WritableRaster 的寬度。
h - 要創建的 WritableRaster 的高度。
返回:
與此 ColorModel 相容的 WritableRaster
另請參見:
WritableRaster, SampleModel

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
用指定寬度和高度創建的 SampleModel,具有與此 ColorModel 相容的資料佈局。

覆寫:
類別 ColorModel 中的 createCompatibleSampleModel
參數:
w - 要創建的 SampleModel 的寬度。
h - 要創建的 SampleModel 的高度。
返回:
與此 ColorModel 相容的 SampleModel
另請參見:
SampleModel

isCompatibleSampleModel

public boolean isCompatibleSampleModel(SampleModel sm)
檢查指定 SampleModel 是否與此 ColorModel 相容。

覆寫:
類別 ColorModel 中的 isCompatibleSampleModel
參數:
sm - 用於測試相容性的 SampleModel
返回:
如果 SampleModel 與此 ColorModel 相容,則返回 true;如果不相容,則返回 false
另請參見:
SampleModel

getAlphaRaster

public WritableRaster getAlphaRaster(WritableRaster raster)
返回表示某圖像(從輸入 Raster 提取)的 alpha 通道的 Raster。此方法假定與此 ColorModel 關聯的 Raster 物件將 alpha band(如果有)存儲為圖像資料的最後一個 band。如果不存在與此 ColorModel 相關的獨立空間 alpha 通道,則返回 null。此方法創建一個新的 Raster,但是共享原來的資料陣列。

覆寫:
類別 ColorModel 中的 getAlphaRaster
參數:
raster - 從中提取 alpha 通道的 WritableRaster
返回:
包含圖像的 alpha 通道的 WritableRaster

equals

public boolean equals(Object obj)
將此顏色模型與其他模型進行相等性比較。

覆寫:
類別 ColorModel 中的 equals
參數:
obj - 要與此顏色模型比較的物件。
返回:
如果顏色模型物件相等,則返回 true;如果不相等,則返回 false
另請參見:
Object.hashCode(), Hashtable

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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