返回介绍

java.awt.color 类 ColorSpace

发布于 2019-10-04 09:50:05 字数 20686 浏览 1221 评论 0 收藏 0

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 数表示。对于多数 ColorSpaces(例如 sRGB)而言,此范围是 0.0 到 1.0。但是某些 ColorSpaces 的颜色分量具有不同的范围值。此类提供了查询每个分量最小和最大标准化值的方法。

定义了多个变量,用来表示颜色空间类型(如 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 , 序列化表格

字段摘要
staticintCS_CIEXYZ

上面定义的 CIEXYZ 变换颜色空间。

staticintCS_GRAY

内置的线性灰度颜色空间。

staticintCS_LINEAR_RGB

内置的线性 RGB 颜色空间。

staticintCS_PYCC

Photo YCC 变换颜色空间。

staticintCS_sRGB

sRGB 颜色空间的定义位于 http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html。

staticintTYPE_2CLR

Generic 2 分量颜色空间。

staticintTYPE_3CLR

Generic 3 分量颜色空间。

staticintTYPE_4CLR

Generic 4 分量颜色空间。

staticintTYPE_5CLR

Generic 5 分量颜色空间。

staticintTYPE_6CLR

Generic 6 分量颜色空间。

staticintTYPE_7CLR

Generic 7 分量颜色空间。

staticintTYPE_8CLR

Generic 8 分量颜色空间。

staticintTYPE_9CLR

Generic 9 分量颜色空间。

staticintTYPE_ACLR

Generic 10 分量颜色空间。

staticintTYPE_BCLR

Generic 11 分量颜色空间。

staticintTYPE_CCLR

Generic 12 分量颜色空间。

staticintTYPE_CMY

CMY 颜色空间的任意颜色系列。

staticintTYPE_CMYK

CMYK 颜色空间的任意颜色系列。

staticintTYPE_DCLR

Generic 13 分量颜色空间。

staticintTYPE_ECLR

Generic 14 分量颜色空间。

staticintTYPE_FCLR

Generic 15 分量颜色空间。

staticintTYPE_GRAY

GRAY 颜色空间的任意颜色系列。

staticintTYPE_HLS

HLS 颜色空间的任意颜色系列。

staticintTYPE_HSV

HSV 颜色空间的任意颜色系列。

staticintTYPE_Lab

Lab 颜色空间的任意颜色系列。

staticintTYPE_Luv

Luv 颜色空间的任意颜色系列。

staticintTYPE_RGB

RGB 颜色空间的任意颜色系列。

staticintTYPE_XYZ

XYZ 颜色空间的任意颜色系列。

staticintTYPE_YCbCr

YCbCr 颜色空间的任意颜色系列。

staticintTYPE_Yxy

Yxy 颜色空间的任意颜色系列。

构造方法摘要
protectedColorSpace(inttype, intnumcomponents)

构造一个给定颜色空间类型和分量数的 ColorSpace。

方法摘要
abstract float[]fromCIEXYZ(float[]colorvalue)

将假定为 CS_CIEXYZ 变换颜色空间中的颜色值转换成此 ColorSpace 中的值。

abstract float[]fromRGB(float[]rgbvalue)

将假定为默认 CS_sRGB 颜色空间中的颜色值转换成此 ColorSpace 中的值。

staticColorSpacegetInstance(intcolorspace)

返回表示特定于预定义颜色空间之一的 ColorSpace。

floatgetMaxValue(intcomponent)

返回指定分量的最大标准化颜色分量值。

floatgetMinValue(intcomponent)

返回指定分量的最小标准化颜色分量值。

StringgetName(intidx)

返回给定分量索引处的分量名称。

intgetNumComponents()

返回 ColorSpace 的分量数。

intgetType()

返回 ColorSpace 的颜色空间类型(例如 TYPE_RGB、TYPE_XYZ……)。

booleanisCS_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(inttype,
                     intnumcomponents)
构造一个给定颜色空间类型和分量数的 ColorSpace。
参数:
type - ColorSpace 类型常量之一
numcomponents - 颜色空间中的分量数

方法详细信息

getInstance

public static ColorSpace getInstance(intcolorspace)
返回表示特定于预定义颜色空间之一的 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(intidx)
返回给定分量索引处的分量名称。
参数:
idx - 分量索引
返回:
指定索引处的分量名称
抛出:
IllegalArgumentException - 如果 idx 小于 0 或者大于 (numComponents) - 1

getMinValue

public float getMinValue(intcomponent)
返回指定分量的最小标准化颜色分量值。此抽象类的默认实现为所有分量返回 0.0。如有必要,子类应该重写此方法。
参数:
component - 分量索引
返回:
最小标准化分量值
抛出:
IllegalArgumentException - 如果 component 小于 0 或者大于 (numComponents) - 1
从以下版本开始:
1.4

getMaxValue

public float getMaxValue(intcomponent)
返回指定分量的最大标准化颜色分量值。此抽象类的默认实现为所有分量返回 1.0。如有必要,子类应该重写此方法。
参数:
component - 分量索引
返回:
最大标准化分量值
抛出:
IllegalArgumentException - 如果 component 小于 0 或者大于 numComponents - 1
从以下版本开始:
1.4

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文