public abstract class ColorSpace extends Object implements Serializable
为了这个类中的方法的目的,颜色被表示为由每个ColorSpace定义的归一化范围内的浮点表示的颜色分量的数组。 对于许多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
viewing illuminance: 200 lux
viewing white point: CIE D50
media white point: "that of a perfectly reflecting diffuser" -- D50
media black point: 0 lux or 0 Reflectance
flare: 1 percent
surround: 20percent of the media white point
media description: reflection print (i.e., RLAB, Hunt viewing media)
note: For developers creating an ICC profile for this conversion
space, the following is applicable. Use a simple Von Kries
white point adaptation folded into the 3X3 matrix parameters
and fold the flare and surround effects into the three
one-dimensional lookup tables (assuming one uses the minimal
model for monitors).
ICC_ColorSpace
, Serialized Form
Modifier and Type | Field and Description |
---|---|
static int |
CS_CIEXYZ
上面定义的CIEXYZ转换颜色空间。
|
static int |
CS_GRAY
内置线性灰度色彩空间。
|
static int |
CS_LINEAR_RGB
内置线性RGB色彩空间。
|
static int |
CS_PYCC
照片YCC转换颜色空间。
|
static int |
CS_sRGB
sRGB颜色空间定义在
http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html 。
|
static int |
TYPE_2CLR
通用2分量颜色空间。
|
static int |
TYPE_3CLR
通用3组件颜色空间。
|
static int |
TYPE_4CLR
通用4组分颜色空间。
|
static int |
TYPE_5CLR
通用5组件颜色空间。
|
static int |
TYPE_6CLR
通用6组件颜色空间。
|
static int |
TYPE_7CLR
通用7组件颜色空间。
|
static int |
TYPE_8CLR
通用8分量颜色空间。
|
static int |
TYPE_9CLR
通用9组件颜色空间。
|
static int |
TYPE_ACLR
通用10组件颜色空间。
|
static int |
TYPE_BCLR
通用11组件颜色空间。
|
static int |
TYPE_CCLR
通用12组件颜色空间。
|
static int |
TYPE_CMY
任何一个家庭的CMY色彩空间。
|
static int |
TYPE_CMYK
任何一个CMYK色彩空间的家庭。
|
static int |
TYPE_DCLR
通用13组件颜色空间。
|
static int |
TYPE_ECLR
通用14组件颜色空间。
|
static int |
TYPE_FCLR
通用15组件颜色空间。
|
static int |
TYPE_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颜色空间。
|
Modifier | Constructor and Description |
---|---|
protected |
ColorSpace(int type, int numcomponents)
给定一个ColorSpace对象,给出一个颜色空间类型和组件数量。
|
Modifier and Type | Method and Description |
---|---|
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颜色空间中的值。
|
@Native public static final int TYPE_XYZ
@Native public static final int TYPE_Lab
@Native public static final int TYPE_Luv
@Native public static final int TYPE_YCbCr
@Native public static final int TYPE_Yxy
@Native public static final int TYPE_RGB
@Native public static final int TYPE_GRAY
@Native public static final int TYPE_HSV
@Native public static final int TYPE_HLS
@Native public static final int TYPE_CMYK
@Native public static final int TYPE_CMY
@Native public static final int TYPE_2CLR
@Native public static final int TYPE_3CLR
@Native public static final int TYPE_4CLR
@Native public static final int TYPE_5CLR
@Native public static final int TYPE_6CLR
@Native public static final int TYPE_7CLR
@Native public static final int TYPE_8CLR
@Native public static final int TYPE_9CLR
@Native public static final int TYPE_ACLR
@Native public static final int TYPE_BCLR
@Native public static final int TYPE_CCLR
@Native public static final int TYPE_DCLR
@Native public static final int TYPE_ECLR
@Native public static final int TYPE_FCLR
@Native public static final int CS_sRGB
@Native public static final int CS_LINEAR_RGB
@Native public static final int CS_CIEXYZ
@Native public static final int CS_PYCC
@Native 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
的特定颜色空间
ColorSpace
对象
public boolean isCS_sRGB()
true
如果这是一个
CS_sRGB
颜色空间,
false
如果不是
public abstract float[] toRGB(float[] colorvalue)
该方法使用旨在产生输入和输出颜色之间最佳感知匹配的算法来转换颜色值。 为了进行颜色值的toCIEXYZ
色转换,您应该使用此颜色空间的toCIEXYZ
方法首先将输入颜色空间转换为CS_CIEXYZ颜色空间,然后使用CS_sRGB颜色空间的fromCIEXYZ
方法将CS_CIEXYZ转换为输出颜色空间。 见toCIEXYZ
和fromCIEXYZ
进一步的信息。
colorvalue
- 一个长度至少为此ColorSpace中组件数量的浮点数组
ArrayIndexOutOfBoundsException
- 如果数组长度至少不在此ColorSpace中的组件数量
public abstract float[] fromRGB(float[] rgbvalue)
该方法使用旨在产生输入和输出颜色之间最佳感知匹配的算法来转换颜色值。 为了进行颜色值的比色转换,您应该使用CS_sRGB颜色空间的toCIEXYZ
方法首先将输入颜色空间转换为CS_CIEXYZ颜色空间,然后使用此颜色空间的fromCIEXYZ
方法将其从CS_CIEXYZ转换为输出颜色空间。 见toCIEXYZ
和fromCIEXYZ
进一步的信息。
rgbvalue
- 长度至少为3的浮点数组
ArrayIndexOutOfBoundsException
- 如果数组长度不小于3
public abstract float[] toCIEXYZ(float[] colorvalue)
该方法使用国际色彩联盟标准定义的相对比色法来转换颜色值。 这意味着通过该方法返回的XYZ值相对于CS_CIEXYZ颜色空间的D50白点来表示。 这种表示在两步颜色转换过程中是有用的,其中颜色从输入颜色空间转换为CS_CIEXYZ,然后转换为输出颜色空间。 该表示与通过色度计从给定颜色值测量的XYZ值不同。 需要进一步的转换来计算使用当前CIE推荐做法测量的XYZ值。 查看toCIEXYZ
的方法ICC_ColorSpace
进一步的信息。
colorvalue
- 一个长度至少为此ColorSpace中组件数量的浮点数组
ArrayIndexOutOfBoundsException
- 如果数组长度至少不在此ColorSpace中的组件数量。
public abstract float[] fromCIEXYZ(float[] colorvalue)
该方法使用国际色彩联盟标准定义的相对比色法来转换颜色值。 这意味着该方法采用的XYZ参数值相对于CS_CIEXYZ颜色空间的D50白点表示。 这种表示在两步颜色转换过程中是有用的,其中颜色从输入颜色空间转换为CS_CIEXYZ,然后转换为输出颜色空间。 该方法返回的颜色值不是那些通过色度计测量时会产生传递给方法的XYZ值的那些。 如果您使用与使用当前CIE推荐做法进行测量相对应的XYZ值,则必须将其转换为D50相对值,然后再传递给此方法。 查看fromCIEXYZ
的方法ICC_ColorSpace
进一步的信息。
colorvalue
- 长度至少为3的浮点数组
ArrayIndexOutOfBoundsException
- 如果数组长度不小于3
public int getType()
ColorSpace
public int getNumComponents()
ColorSpace
的数量在这个
ColorSpace
。
public String getName(int idx)
idx
- 组件索引
IllegalArgumentException
- 如果
idx
小于0或大于numComponents - 1
public float getMinValue(int component)
component
- 组件索引
IllegalArgumentException
- 如果组件小于0或大于numComponents - 1
public float getMaxValue(int component)
component
- 组件索引
IllegalArgumentException
- 如果组件小于0或大于numComponents - 1