java.awt.color

异常
java.lang.Object
  继承者 java.awt.color.ColorSpace
所有已实现的接口:
Serializable
直接已知子类:
ICC_ColorSpace

public abstract class ColorSpace
     
extends Object
implements Serializable

此抽象类用做一个颜色空间标记,标识 Color 对象的特定颜色空间,或者通过 ColorModel 对象标识 Image、BufferedImage 或 GraphicsDevice 的特定颜色空间。此类包含了可将指定颜色空间中的颜色与 sRGB 和定义良好的 CIEXYZ 颜色空间中的颜色进行相互转换的方法。

对于此类中的各个方法,颜色以颜色分量数组表示,颜色分量则是以每个 ColorSpace 定义的标准化范围中的 float 数表示。对于多数 ColorSpace(例如 sRGB)而言,此范围是 0.0 到 1.0。但是某些 ColorSpace 的颜色分量具有不同的范围值。此类提供了查询每个分量最小和最大标准化值的方法。

定义了多个变量,用来表示颜色空间类型(如 TYPE_RGB、TYPE_XYZ 等等)和特定颜色空间(如 CS_sRGB 和 CS_CIEXYZ)。sRGB 指的是标准的 RGB 颜色空间。有关更多信息,请参阅 http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html

提供对定义良好的 CIEXYZ 颜色空间相互转换的方法是为了支持在任意两个颜色空间之间进行高精确度的变换。用户期望 ColorSpace(如 ICC_ColorSpace)的特定子类实现能支持基于基础平台颜色管理系统的高性能变换。

toCIEXYZ/fromCIEXYZ 方法使用的 CS_CIEXYZ 空间可以描述如下:


      CIEXYZ
      观看照度:200 勒克斯
      观看白色点:CIE D50
      介质白色点:“完全反射漫射面”-- D50
      介质黑色点:0 勒克斯或 0 反射率
      流光:1%
      环绕:介质白色点的 20%
      介质说明:反射输出(例如,RLAB,Hunt 观看介质)
      注:对于要为此变换空间创建 ICC 配置文件的开发人员,可采用下列方法。使用简单的 Von Kries 适用模式将白色点放入 3X3 的矩阵参数中;将流光和环绕效果放入三个一维检索表中(假定每个表都使用了监视器最低限度的模型)。

另请参见:
ICC_ColorSpace, 序列化表格

字段摘要
static int CS_CIEXYZ
          上面定义的 CIEXYZ 变换颜色空间。
static int CS_GRAY
          内置的线性灰度颜色空间。
static int CS_LINEAR_RGB
          内置的线性 RGB 颜色空间。
static int CS_PYCC
          Photo YCC 变换颜色空间。
static int CS_sRGB
          sRGB 颜色空间的定义位于 http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html
static int TYPE_2CLR
          Generic 2 分量颜色空间。
static int TYPE_3CLR
          Generic 3 分量颜色空间。
static int TYPE_4CLR
          Generic 4 分量颜色空间。
static int TYPE_5CLR
          Generic 5 分量颜色空间。
static int TYPE_6CLR
          Generic 6 分量颜色空间。
static int TYPE_7CLR
          Generic 7 分量颜色空间。
static int TYPE_8CLR
          Generic 8 分量颜色空间。
static int TYPE_9CLR
          Generic 9 分量颜色空间。
static int TYPE_ACLR
          Generic 10 分量颜色空间。
static int TYPE_BCLR
          Generic 11 分量颜色空间。
static int TYPE_CCLR
          Generic 12 分量颜色空间。
static int TYPE_CMY
          CMY 颜色空间的任意颜色系列。
static int TYPE_CMYK
          CMYK 颜色空间的任意颜色系列。
static int TYPE_DCLR
          Generic 13 分量颜色空间。
static int TYPE_ECLR
          Generic 14 分量颜色空间。
static int TYPE_FCLR
          Generic 15 分量颜色空间。
static int TYPE_GRAY
          GRAY 颜色空间的任意颜色系列。
static int TYPE_HLS
          HLS 颜色空间的任意颜色系列。
static int TYPE_HSV
          HSV 颜色空间的任意颜色系列。
static int TYPE_Lab
          Lab 颜色空间的任意颜色系列。
static int TYPE_Luv
          Luv 颜色空间的任意颜色系列。
static int TYPE_RGB
          RGB 颜色空间的任意颜色系列。
static int TYPE_XYZ
          XYZ 颜色空间的任意颜色系列。
static int TYPE_YCbCr
          YCbCr 颜色空间的任意颜色系列。
static int TYPE_Yxy
          Yxy 颜色空间的任意颜色系列。
 
构造方法摘要
protected ColorSpace(int type, int numcomponents)
          构造一个给定颜色空间类型和分量数的 ColorSpace。
 
方法摘要
abstract  float[] fromCIEXYZ(float[] colorvalue)
          将假定为 CS_CIEXYZ 变换颜色空间中的颜色值转换成此 ColorSpace 中的值。
abstract  float[] fromRGB(float[] rgbvalue)
          将假定为默认 CS_sRGB 颜色空间中的颜色值转换成此 ColorSpace 中的值。
static ColorSpace getInstance(int colorspace)
          返回表示特定于预定义颜色空间之一的 ColorSpace。
 float getMaxValue(int component)
          返回指定分量的最大标准化颜色分量值。
 float getMinValue(int component)
          返回指定分量的最小标准化颜色分量值。
 String getName(int idx)
          返回给定分量索引处的分量名称。
 int getNumComponents()
          返回此 ColorSpace 的分量数。
 int getType()
          返回此 ColorSpace 的颜色空间类型(例如 TYPE_RGB、TYPE_XYZ……)。
 boolean isCS_sRGB()
          如果 ColorSpace 是 CS_sRGB,则返回 true。
abstract  float[] toCIEXYZ(float[] colorvalue)
          将假定为此 ColorSpace 中的颜色值转换成 CS_CIEXYZ 变换颜色空间中的值。
abstract  float[] toRGB(float[] colorvalue)
          将假定为此 ColorSpace 中的颜色值转换成默认 CS_sRGB 颜色空间中的值。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

TYPE_XYZ

public static final int TYPE_XYZ
XYZ 颜色空间的任意颜色系列。

另请参见:
常量字段值

TYPE_Lab

public static final int TYPE_Lab
Lab 颜色空间的任意颜色系列。

另请参见:
常量字段值

TYPE_Luv

public static final int TYPE_Luv
Luv 颜色空间的任意颜色系列。

另请参见:
常量字段值

TYPE_YCbCr

public static final int TYPE_YCbCr
YCbCr 颜色空间的任意颜色系列。

另请参见:
常量字段值

TYPE_Yxy

public static final int TYPE_Yxy
Yxy 颜色空间的任意颜色系列。

另请参见:
常量字段值

TYPE_RGB

public static final int TYPE_RGB
RGB 颜色空间的任意颜色系列。

另请参见:
常量字段值

TYPE_GRAY

public static final int TYPE_GRAY
GRAY 颜色空间的任意颜色系列。

另请参见:
常量字段值

TYPE_HSV

public static final int TYPE_HSV
HSV 颜色空间的任意颜色系列。

另请参见:
常量字段值

TYPE_HLS

public static final int TYPE_HLS
HLS 颜色空间的任意颜色系列。

另请参见:
常量字段值

TYPE_CMYK

public static final int TYPE_CMYK
CMYK 颜色空间的任意颜色系列。

另请参见:
常量字段值

TYPE_CMY

public static final int TYPE_CMY
CMY 颜色空间的任意颜色系列。

另请参见:
常量字段值

TYPE_2CLR

public static final int TYPE_2CLR
Generic 2 分量颜色空间。

另请参见:
常量字段值

TYPE_3CLR

public static final int TYPE_3CLR
Generic 3 分量颜色空间。

另请参见:
常量字段值

TYPE_4CLR

public static final int TYPE_4CLR
Generic 4 分量颜色空间。

另请参见:
常量字段值

TYPE_5CLR

public static final int TYPE_5CLR
Generic 5 分量颜色空间。

另请参见:
常量字段值

TYPE_6CLR

public static final int TYPE_6CLR
Generic 6 分量颜色空间。

另请参见:
常量字段值

TYPE_7CLR

public static final int TYPE_7CLR
Generic 7 分量颜色空间。

另请参见:
常量字段值

TYPE_8CLR

public static final int TYPE_8CLR
Generic 8 分量颜色空间。

另请参见:
常量字段值

TYPE_9CLR

public static final int TYPE_9CLR
Generic 9 分量颜色空间。

另请参见:
常量字段值

TYPE_ACLR

public static final int TYPE_ACLR
Generic 10 分量颜色空间。

另请参见:
常量字段值

TYPE_BCLR

public static final int TYPE_BCLR
Generic 11 分量颜色空间。

另请参见:
常量字段值

TYPE_CCLR

public static final int TYPE_CCLR
Generic 12 分量颜色空间。

另请参见:
常量字段值

TYPE_DCLR

public static final int TYPE_DCLR
Generic 13 分量颜色空间。

另请参见:
常量字段值

TYPE_ECLR

public static final int TYPE_ECLR
Generic 14 分量颜色空间。

另请参见:
常量字段值

TYPE_FCLR

public static final int TYPE_FCLR
Generic 15 分量颜色空间。

另请参见:
常量字段值

CS_sRGB

public static final int CS_sRGB
sRGB 颜色空间的定义位于 http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html

另请参见:
常量字段值

CS_LINEAR_RGB

public static final int CS_LINEAR_RGB
内置的线性 RGB 颜色空间。此空间基于与 CS_sRGB 相同的 RGB 原色,但是有一个线性色调再现曲线。

另请参见:
常量字段值

CS_CIEXYZ

public static final int CS_CIEXYZ
上面定义的 CIEXYZ 变换颜色空间。

另请参见:
常量字段值

CS_PYCC

public static final int CS_PYCC
Photo YCC 变换颜色空间。

另请参见:
常量字段值

CS_GRAY

public static final int CS_GRAY
内置的线性灰度颜色空间。

另请参见:
常量字段值
构造方法详细信息

ColorSpace

protected ColorSpace(int type,
                     int numcomponents)
构造一个给定颜色空间类型和分量数的 ColorSpace。

参数:
type - ColorSpace 类型常量之一
numcomponents - 颜色空间中的分量数
方法详细信息

getInstance

public static ColorSpace getInstance(int colorspace)
返回表示特定于预定义颜色空间之一的 ColorSpace。

参数:
colorspace - 由某个预定义的类常量标识的特定颜色空间(如 CS_sRGB、CS_LINEAR_RGB、CS_CIEXYZ、CS_GRAY 或 CS_PYCC)
返回:
请求的 ColorSpace 对象

isCS_sRGB

public boolean isCS_sRGB()
如果 ColorSpace 是 CS_sRGB,则返回 true。

返回:
如果这是一个 CS_sRGB 颜色空间,则返回 true;如果不是,则返回 false

toRGB

public abstract float[] toRGB(float[] colorvalue)
将假定为此 ColorSpace 中的颜色值转换成默认 CS_sRGB 颜色空间中的值。

此方法使用可在输入和输出颜色之间生成最佳感知匹配的算法来转换颜色值。为了完成颜色值的色度变换,应该首先使用此颜色空间的 toCIEXYZ 方法将颜色值从输入颜色空间转换到 CS_CIEXYZ 颜色空间,然后使用 CS_sRGB 颜色空间的 fromCIEXYZ 方法将其从 CS_CIEXYZ 转换到输出颜色空间。有关更多信息,请参阅 toCIEXYZfromCIEXYZ

参数:
colorvalue - 一个长度至少为此 ColorSpace 中分量数的 float 数组
返回:
一个长度为 3 的 float 数组
抛出:
ArrayIndexOutOfBoundsException - 如果数组长度小于此 ColorSpace 中的分量数

fromRGB

public abstract float[] fromRGB(float[] rgbvalue)
将假定为默认 CS_sRGB 颜色空间中的颜色值转换成此 ColorSpace 中的值。

此方法使用可在输入和输出颜色之间生成最佳感知匹配的算法来转换颜色值。为了完成颜色值的色度变换,应该首先使用 CS_sRGB 颜色空间的 toCIEXYZ 方法将颜色值从输入颜色空间变换到 CS_CIEXYZ 颜色空间,然后使用此颜色空间的 fromCIEXYZ 方法将其从 CS_CIEXYZ 变换到输出颜色空间。有关更多信息,请参阅 toCIEXYZfromCIEXYZ

参数:
rgbvalue - 一个长度至少为 3 的 float 数组
返回:
一个长度等于 ColorSpace 中分量数的 float 数组
抛出:
ArrayIndexOutOfBoundsException - 如果数组长度小于 3

toCIEXYZ

public abstract float[] toCIEXYZ(float[] colorvalue)
将假定为此 ColorSpace 中的颜色值转换成 CS_CIEXYZ 变换颜色空间中的值。

此方法使用相对色度来转换颜色值,由国际色彩联盟标准所定义。这意味着此方法所返回的 XYZ 值是用相对于 CS_CIEXYZ 颜色空间的 D50 白色点来表示的。这种表示方法在两步骤的颜色变换过程中是很有用的,即将输入颜色空间中的颜色转换为 CS_CIEXYZ,然后再转换为输出颜色空间中的颜色。此表示形式与使用色度计由给定颜色值所测量的 XYZ 值不同。计算使用当前 CIE 推荐的做法所测量的 XYZ 值还需要进一步的转换。有关更多信息,请参阅 ICC_ColorSpacetoCIEXYZ 方法。

参数:
colorvalue - 一个长度至少为此 ColorSpace 中分量数的 float 数组
返回:
一个长度为 3 的 float 数组
抛出:
ArrayIndexOutOfBoundsException - 如果数组长度小于此 ColorSpace 中的分量数。

fromCIEXYZ

public abstract float[] fromCIEXYZ(float[] colorvalue)
将假定为 CS_CIEXYZ 变换颜色空间中的颜色值转换成此 ColorSpace 中的值。

此方法使用相对色度来转换颜色值,由国际色彩联盟标准所定义。这意味着此方法所返回的 XYZ 参数值是用相对于 CS_CIEXYZ 颜色空间的 D50 白色点来表示的。这种表示方法在两步骤的颜色变换过程中是很有用的,即将输入颜色空间中的颜色转换为 CS_CIEXYZ,然后再转换为输出颜色空间中的颜色。此方法返回的颜色值与色度计测量时生成并传递给方法的 XYZ 值不同。如果 XYZ 值对应于使用当前 CIE 推荐的做法所测量的值,则在将其传递给此方法前必须将其转换成 D50 的相对值。有关更多信息,请参阅 ICC_ColorSpacefromCIEXYZ 方法。

参数:
colorvalue - 一个长度至少为 3 的 float 数组
返回:
一个长度等于 ColorSpace 中分量数的 float 数组
抛出:
ArrayIndexOutOfBoundsException - 如果数组长度小于 3

getType

public int getType()
返回此 ColorSpace 的颜色空间类型(例如 TYPE_RGB、TYPE_XYZ……)。类型定义了颜色空间的分量数和对它的解释,例如,TYPE_RGB 表示具有三个分量的颜色空间:红色、绿色和蓝色。它并不定义空间的特定颜色特征(如,原色的色度)。

返回:
表示此 ColorSpace 类型的类型常量

getNumComponents

public int getNumComponents()
返回此 ColorSpace 的分量数。

返回:
ColorSpace 中的分量数。

getName

public String getName(int idx)
返回给定分量索引处的分量名称。

参数:
idx - 分量索引
返回:
指定索引处的分量名称
抛出:
IllegalArgumentException - 如果 idx 小于 0 或者大于 (numComponents) - 1

getMinValue

public float getMinValue(int component)
返回指定分量的最小标准化颜色分量值。此抽象类的默认实现为所有分量返回 0.0。如有必要,子类应该重写此方法。

参数:
component - 分量索引
返回:
最小标准化分量值
抛出:
IllegalArgumentException - 如果 component 小于 0 或者大于 (numComponents) - 1
从以下版本开始:
1.4

getMaxValue

public float getMaxValue(int component)
返回指定分量的最大标准化颜色分量值。此抽象类的默认实现为所有分量返回 1.0。如有必要,子类应该重写此方法。

参数:
component - 分量索引
返回:
最大标准化分量值
抛出:
IllegalArgumentException - 如果 component 小于 0 或者大于 numComponents - 1
从以下版本开始:
1.4