モジュール java.desktop
パッケージ java.awt.image

クラスColorModel

java.lang.Object
java.awt.image.ColorModel
すべての実装されたインタフェース:
Transparency
直系の既知のサブクラス:
ComponentColorModel, IndexColorModel, PackedColorModel

public abstract class ColorModel extends Object implements Transparency
ColorModel抽象クラスは、ピクセル値を色成分(赤、緑、青など)およびアルファ成分に変換するメソッドをカプセル化します。 イメージをスクリーン、プリンタ、またはほかのイメージに描画するには、ピクセル値を色成分およびアルファ成分に変換する必要があります。 このクラスのメソッドの引数または戻り値として、ピクセルは32ビットintまたはプリミティブ型の配列として表されます。 ColorModelの色成分の数、順序、および解釈は、ColorSpaceで指定します。 アルファ情報を持たないピクセル・データとともに使用されるColorModelは、すべてのピクセルを不透明(アルファ値1.0)として処理します。

このColorModelクラスでは、ピクセル値の2つの表現をサポートします。 ピクセル値は、単一の32ビットintまたはプリミティブ型の配列として表すことができます。 Java(TM) Platform 1.0および1.1 APIでは、ピクセルは単一のbyte値または単一のint値で表現されました。 ColorModelクラスでは、ピクセル値引数はintとして渡されました。 Java(TM) 2 Platform APIでは、イメージを表すための新しいクラスが導入されました。 RasterクラスおよびSampleModelクラスに基づくBufferedImageオブジェクトまたはRenderedImageオブジェクトの場合、ピクセル値は単一のintとしては表現できません。 このため、現在、ColorModelにはプリミティブ型の配列として表示されたピクセル値を受け入れるメソッドがあります。 特定のColorModelオブジェクトによって使用されるプリミティブ型は、転送型と呼ばれます。

ピクセル値を単一のintとして表現できないイメージとともに使用されるColorModelオブジェクトは、単一のintピクセル引数をとるメソッドが呼び出されるとIllegalArgumentExceptionをスローします。 ColorModelのサブクラスでは、この例外が発生する条件を指定する必要があります。 DirectColorModelオブジェクトやIndexColorModelオブジェクトでは、この例外は発生しません。

現在Java 2D(TM) APIでサポートされている転送型は、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT、DataBuffer.TYPE_SHORT、DataBuffer.TYPE_FLOAT、およびDataBuffer.TYPE_DOUBLEです。 転送型の初めの3つに基づくColorModelとイメージを使用すると、ほとんどの描画操作がより速く実行されます。 また、残りの3つの転送型に基づくColorModelとイメージについては、イメージのフィルタ操作のうちのいくつかがサポートされていません。 特定のColorModelオブジェクトの転送型は、オブジェクトが生成されるときに明示的にまたはデフォルトで指定されます。 ColorModelの各サブクラスでは、利用可能な転送型がいずれか、およびピクセルを表すプリミティブ配列の要素数がどのように決められるかを指定する必要があります。

BufferedImagesの場合、RasterおよびRasterオブジェクトのSampleModelの転送型(それらのクラスのgetTransferTypeメソッドを介して取得できます)は、ColorModelの転送型と一致する必要があります。 RasterおよびSampleModelのピクセルを表す配列の要素数(それらのクラスのgetNumDataElementsメソッドを介して取得できます)は、ColorModelと一致する必要があります。

ピクセル値から色成分およびアルファ成分への変換に使用するアルゴリズムは、サブクラスによって異なります。 たとえば、BufferedImageオブジェクトのRasterSampleModelによって得られるサンプルと色成分およびアルファ成分の間は1対1で対応していなくてもかまいません。 1対1の対応がある場合でも、サンプルのビット数は、対応する色成分およびアルファ成分のビット数と同じでなくてもかまいません。 各サブクラスでは、ピクセル値から色成分およびアルファ成分への変換がどのように行われるかを指定する必要があります。

ColorModelクラスのメソッドは、色成分およびアルファ成分の2つの異なる表現である標準化形式と非標準化形式を使用します。 標準化形式では、各成分は最小値と最大値の間のfloat値です。 アルファ成分では、最小値は0.0、最大値は1.0です。 色成分では、各成分の最小値と最大値はColorSpaceオブジェクトから取得でき、 値は通常0.0と1.0 (デフォルトのsRGBカラー領域にある標準化成分の値の範囲は0.0 - 1.0、など)ですが、これと異なる上限と下限の成分値を持つカラー領域もあります。 これらの限界値はColorSpaceクラスのgetMinValueメソッドおよびgetMaxValueメソッドを使用して取得できます。 標準化色成分値はあらかじめ乗算されません。 すべてのColorModelsは標準化形式をサポートする必要があります。

非標準化形式では、各成分は0と2n - 1の間の符号なし整数値です。nは、特定の成分の有効ビットの数です。 特定のColorModelのピクセル値がアルファ・サンプルであらかじめ乗算されているカラー・サンプルを表す場合、非標準化色成分も同じようにあらかじめ乗算されます。 非標準化形式は、ColorSpaceがすべての成分に対して最小成分値が0.0、最大成分値が1.0であるColorModelのインスタンスのみとともに使用されます。 非標準化形式の色成分とアルファ成分は、標準化成分値がすべて0.0と1.0の間にあるColorModelsを表すことができます。 このような場合、整数値0は0.0にマップされ、値2n -1は1.0にマップされます。 これ以外の、たとえば標準化成分値が正または負の場合は、非標準化形式は適切ではありません。 このようなColorModelオブジェクトは、非標準化引数を含むメソッドが呼び出されるとIllegalArgumentExceptionをスローします。 ColorModelのサブクラスでは、この例外が発生する条件を指定する必要があります。

関連項目: