Module java.desktop
Package java.awt.color

Class ColorSpace

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

public abstract class ColorSpace extends Object implements Serializable
这个抽象类用作颜色空间标签,用于识别Color对象的特定颜色空间,或者通过ColorModel对象,识别ImageBufferedImageGraphicsDevice的特定颜色空间。它包含将特定颜色空间中的颜色转换到/从sRGB和到/从明确定义的CIEXYZ颜色空间的方法。

对于这个类中的方法,颜色被表示为颜色组件的数组,这些颜色组件以每个ColorSpace定义的标准化范围中的浮点数表示。对于许多ColorSpaces(例如sRGB),这个范围是0.0到1.0。然而,一些ColorSpaces具有值范围不同的组件。提供了查询每个组件最小和最大标准化值的方法。

为了指代颜色空间类型(例如TYPE_RGBTYPE_XYZ等)和特定颜色空间(例如CS_sRGBCS_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矩阵参数中,并将闪烁和环境效果折叠到三个一维查找表中(假设使用显示器的最小模型)。

 
参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    上面定义的内置CIEXYZ转换颜色空间。
    static final int
    内置线性灰度颜色空间。
    static final int
    内置线性RGB颜色空间。
    static final int
    内置Photo YCC转换颜色空间。
    static final int
    http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html上定义的内置sRGB颜色空间。
    static final int
    通用的2组分颜色空间。
    static final int
    通用的3组分颜色空间。
    static final int
    通用的4组分颜色空间。
    static final int
    通用的5组分颜色空间。
    static final int
    通用的6组分颜色空间。
    static final int
    通用的7组分颜色空间。
    static final int
    通用的8组分颜色空间。
    static final int
    通用的9组分颜色空间。
    static final int
    通用的10组分颜色空间。
    static final int
    通用的11组分颜色空间。
    static final int
    通用的12组分颜色空间。
    static final int
    任何CMY颜色空间系列之一。
    static final int
    任何CMYK颜色空间系列之一。
    static final int
    通用的13组分颜色空间。
    static final int
    通用的14组分颜色空间。
    static final int
    通用的15组分颜色空间。
    static final int
    任何GRAY颜色空间系列之一。
    static final int
    任何HLS颜色空间系列之一。
    static final int
    任何HSV颜色空间系列之一。
    static final int
    任何Lab颜色空间系列之一。
    static final int
    任何Luv颜色空间系列之一。
    static final int
    任何RGB颜色空间系列之一。
    static final int
    任何XYZ颜色空间系列之一。
    static final int
    任何YCbCr颜色空间系列之一。
    static final int
    任何Yxy颜色空间系列之一。
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    ColorSpace(int type, int numComponents)
    给定颜色空间类型和组件数量,构造一个ColorSpace对象。
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract float[]
    fromCIEXYZ(float[] colorvalue)
    将假定在CS_CIEXYZ转换颜色空间中的颜色值转换为这个ColorSpace
    abstract float[]
    fromRGB(float[] rgbvalue)
    将假定在默认CS_sRGB颜色空间中的颜色值转换为这个ColorSpace
    static ColorSpace
    getInstance(int cspace)
    返回表示特定预定义颜色空间之一的ColorSpace
    float
    getMaxValue(int component)
    返回指定组件的最大标准化颜色组件值。
    float
    getMinValue(int component)
    返回指定组件的最小标准化颜色组件值。
    getName(int component)
    返回给定组件索引的组件名称。
    int
    返回这个ColorSpace的组件数量。
    int
    返回这个ColorSpace的颜色空间类型(例如TYPE_RGBTYPE_XYZ等)。
    boolean
    如果ColorSpaceCS_sRGB,则返回true。
    abstract float[]
    toCIEXYZ(float[] colorvalue)
    将假定在这个ColorSpace中的颜色值转换为CS_CIEXYZ转换颜色空间。
    abstract float[]
    toRGB(float[] colorvalue)
    将假定在这个ColorSpace中的颜色值转换为默认CS_sRGB颜色空间中的值。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • ColorSpace

      protected ColorSpace(int type, int numComponents)
      给定色彩空间类型和组件数量构造一个ColorSpace对象。
      参数:
      type - ColorSpace类型常量之一
      numComponents - 色彩空间中的组件数量
  • Method Details

    • getInstance

      public static ColorSpace getInstance(int cspace)
      返回表示特定预定义色彩空间之一的ColorSpace
      参数:
      cspace - 由预定义类常量之一标识的特定色彩空间(例如CS_sRGBCS_LINEAR_RGBCS_CIEXYZCS_GRAYCS_PYCC
      返回:
      请求的ColorSpace对象
    • isCS_sRGB

      public boolean isCS_sRGB()
      如果ColorSpaceCS_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中组件数量的浮点数组
      返回:
      长度为3的浮点数组
      抛出:
      ArrayIndexOutOfBoundsException - 如果数组长度至少不是此ColorSpace中组件数量
    • fromRGB

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

      此方法使用专为产生输入和输出颜色之间最佳感知匹配的算法进行颜色值转换。为了对颜色值进行色度转换,应首先使用CS_sRGB色彩空间的toCIEXYZ方法将颜色从输入色彩空间转换为CS_CIEXYZ色彩空间,然后使用此色彩空间的fromCIEXYZ方法将颜色从CS_CIEXYZ转换为输出色彩空间。有关更多信息,请参见toCIEXYZfromCIEXYZ

      参数:
      rgbvalue - 至少具有长度为3的浮点数组
      返回:
      长度等于此ColorSpace中组件数量的浮点数组
      抛出:
      ArrayIndexOutOfBoundsException - 如果数组长度至少不是3
    • toCIEXYZ

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

      此方法使用国际色彩协会标准定义的相对色度法转换颜色值。这意味着此方法返回的XYZ值是相对于CS_CIEXYZ色彩空间的D50白点表示的。此表示在两步色彩转换过程中非常有用,其中颜色从输入色彩空间转换为CS_CIEXYZ,然后再转换为输出色彩空间。此表示与通过色彩计量仪测量给定颜色值时得到的XYZ值不同。在将当前CIE推荐实践下进行的测量得到的XYZ值必须在传递给此方法之前转换为D50相对值。有关更多信息,请参见ICC_ColorSpacetoCIEXYZ方法。

      参数:
      colorvalue - 至少具有此ColorSpace中组件数量的浮点数组
      返回:
      长度为3的浮点数组
      抛出:
      ArrayIndexOutOfBoundsException - 如果数组长度至少不是此ColorSpace中组件数量
    • fromCIEXYZ

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

      此方法使用国际色彩协会标准定义的相对色度法转换颜色值。这意味着此方法接受的XYZ参数值是相对于CS_CIEXYZ色彩空间的D50白点表示的。此表示在两步色彩转换过程中非常有用,其中颜色从输入色彩空间转换为CS_CIEXYZ,然后再转换为输出色彩空间。此方法返回的颜色值不是通过色彩计量仪测量时产生传递给方法的XYZ值。如果您有与当前CIE推荐实践下进行的测量相对应的XYZ值,则必须在传递给此方法之前将其转换为D50相对值。有关更多信息,请参见ICC_ColorSpacefromCIEXYZ方法。

      参数:
      colorvalue - 至少具有长度为3的浮点数组
      返回:
      长度等于此ColorSpace中组件数量的浮点数组
      抛出:
      ArrayIndexOutOfBoundsException - 如果数组长度至少不是3
    • getType

      public int getType()
      返回此ColorSpace的色彩空间类型(例如TYPE_RGBTYPE_XYZ,...)。类型定义了色彩空间的组件数量和解释,例如TYPE_RGB标识具有三个组件(红、绿、蓝)的色彩空间。它不定义空间的特定色彩特性,例如主色度。
      返回:
      代表此ColorSpace类型的类型常量
    • getNumComponents

      public int getNumComponents()
      返回此ColorSpace的组件数量。
      返回:
      ColorSpace中的组件数量
    • getName

      public String getName(int component)
      返回给定组件索引的组件名称。
      参数:
      component - 组件索引
      返回:
      指定索引处组件的名称
      抛出:
      IllegalArgumentException - 如果component小于0或大于numComponents - 1
    • getMinValue

      public float getMinValue(int component)
      返回指定组件的最小归一化颜色分量值。此抽象类中的默认实现对所有组件返回0.0。如果需要,子类应该重写此方法。
      参数:
      component - 组件索引
      返回:
      最小归一化分量值
      抛出:
      IllegalArgumentException - 如果组件小于0或大于numComponents - 1
      自版本:
      1.4
    • getMaxValue

      public float getMaxValue(int component)
      返回指定组件的最大归一化颜色分量值。此抽象类中的默认实现对所有组件返回1.0。如果需要,子类应该重写此方法。
      参数:
      component - 组件索引
      返回:
      最大归一化分量值
      抛出:
      IllegalArgumentException - 如果组件小于0或大于numComponents - 1
      自版本:
      1.4