java.lang.Object java.awt.color.ColorSpace
public abstract class ColorSpace
此抽象类用做一个颜色空间标记,标识 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 |
字段详细信息 |
---|
public static final int TYPE_XYZ
public static final int TYPE_Lab
public static final int TYPE_Luv
public static final int TYPE_YCbCr
public static final int TYPE_Yxy
public static final int TYPE_RGB
public static final int TYPE_GRAY
public static final int TYPE_HSV
public static final int TYPE_HLS
public static final int TYPE_CMYK
public static final int TYPE_CMY
public static final int TYPE_2CLR
public static final int TYPE_3CLR
public static final int TYPE_4CLR
public static final int TYPE_5CLR
public static final int TYPE_6CLR
public static final int TYPE_7CLR
public static final int TYPE_8CLR
public static final int TYPE_9CLR
public static final int TYPE_ACLR
public static final int TYPE_BCLR
public static final int TYPE_CCLR
public static final int TYPE_DCLR
public static final int TYPE_ECLR
public static final int TYPE_FCLR
public static final int CS_sRGB
public static final int CS_LINEAR_RGB
public static final int CS_CIEXYZ
public static final int CS_PYCC
public static final int CS_GRAY
构造方法详细信息 |
---|
protected ColorSpace(int type, int numcomponents)
type
-
ColorSpace
类型常量之一
numcomponents
- 颜色空间中的分量数
方法详细信息 |
---|
public static ColorSpace getInstance(int colorspace)
colorspace
- 由某个预定义的类常量标识的特定颜色空间(如 CS_sRGB、CS_LINEAR_RGB、CS_CIEXYZ、CS_GRAY 或 CS_PYCC)
ColorSpace
对象
public boolean isCS_sRGB()
CS_sRGB
颜色空间,则返回
true
;如果不是,则返回
false
public abstract float[] toRGB(float[] colorvalue)
此方法使用可在输入和输出颜色之间生成最佳感知匹配的算法来转换颜色值。为了完成颜色值的色度变换,应该首先使用此颜色空间的 toCIEXYZ
方法将颜色值从输入颜色空间转换到 CS_CIEXYZ 颜色空间,然后使用 CS_sRGB 颜色空间的 fromCIEXYZ
方法将其从 CS_CIEXYZ 转换到输出颜色空间。有关更多信息,请参阅 toCIEXYZ
和 fromCIEXYZ
。
colorvalue
- 一个长度至少为此 ColorSpace 中分量数的 float 数组
ArrayIndexOutOfBoundsException
- 如果数组长度小于此 ColorSpace 中的分量数
public abstract float[] fromRGB(float[] rgbvalue)
此方法使用可在输入和输出颜色之间生成最佳感知匹配的算法来转换颜色值。为了完成颜色值的色度变换,应该首先使用 CS_sRGB 颜色空间的 toCIEXYZ
方法将颜色值从输入颜色空间变换到 CS_CIEXYZ 颜色空间,然后使用此颜色空间的 fromCIEXYZ
方法将其从 CS_CIEXYZ 变换到输出颜色空间。有关更多信息,请参阅 toCIEXYZ
和 fromCIEXYZ
。
rgbvalue
- 一个长度至少为 3 的 float 数组
ArrayIndexOutOfBoundsException
- 如果数组长度小于 3
public abstract float[] toCIEXYZ(float[] colorvalue)
此方法使用相对色度来转换颜色值,由国际色彩联盟标准所定义。这意味着此方法所返回的 XYZ 值是用相对于 CS_CIEXYZ 颜色空间的 D50 白色点来表示的。这种表示方法在两步骤的颜色变换过程中是很有用的,即将输入颜色空间中的颜色转换为 CS_CIEXYZ,然后再转换为输出颜色空间中的颜色。此表示形式与使用色度计由给定颜色值所测量的 XYZ 值不同。计算使用当前 CIE 推荐的做法所测量的 XYZ 值还需要进一步的转换。有关更多信息,请参阅 ICC_ColorSpace
的 toCIEXYZ
方法。
colorvalue
- 一个长度至少为此 ColorSpace 中分量数的 float 数组
ArrayIndexOutOfBoundsException
- 如果数组长度小于此 ColorSpace 中的分量数。
public abstract float[] fromCIEXYZ(float[] colorvalue)
此方法使用相对色度来转换颜色值,由国际色彩联盟标准所定义。这意味着此方法所返回的 XYZ 参数值是用相对于 CS_CIEXYZ 颜色空间的 D50 白色点来表示的。这种表示方法在两步骤的颜色变换过程中是很有用的,即将输入颜色空间中的颜色转换为 CS_CIEXYZ,然后再转换为输出颜色空间中的颜色。此方法返回的颜色值与色度计测量时生成并传递给方法的 XYZ 值不同。如果 XYZ 值对应于使用当前 CIE 推荐的做法所测量的值,则在将其传递给此方法前必须将其转换成 D50 的相对值。有关更多信息,请参阅 ICC_ColorSpace
的 fromCIEXYZ
方法。
colorvalue
- 一个长度至少为 3 的 float 数组
ArrayIndexOutOfBoundsException
- 如果数组长度小于 3
public int getType()
ColorSpace
类型的类型常量
public int getNumComponents()
ColorSpace
中的分量数。
public String getName(int idx)
idx
- 分量索引
IllegalArgumentException
- 如果
idx
小于 0 或者大于 (numComponents) - 1
public float getMinValue(int component)
component
- 分量索引
IllegalArgumentException
- 如果 component 小于 0 或者大于 (numComponents) - 1
public float getMaxValue(int component)
component
- 分量索引
IllegalArgumentException
- 如果 component 小于 0 或者大于 numComponents - 1