Module  java.desktop
软件包  java.awt.color

Class ColorSpace

  • All Implemented Interfaces:
    Serializable
    已知直接子类:
    ICC_ColorSpace


    public abstract class ColorSpace
    extends Object
    implements Serializable
    该抽象类用于作为颜色空间标签,用于标识Color对象的特定颜色空间,或通过ColorModel对象来映射Image,BufferedImage或GraphicsDevice。 它包含将特定颜色空间中的颜色转换为/从sRGB和/或来自明确定义的CIEXYZ颜色空间的方法。

    为了这个类中的方法的目的,颜色被表示为由每个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_ColorSpaceSerialized Form
    • Field Summary

      Fields  
      Modifier and Type Field 描述
      static int CS_CIEXYZ
      上面定义的CIEXYZ转换颜色空间。
      static int CS_GRAY
      内置线性灰度色彩空间。
      static int CS_LINEAR_RGB
      内置线性RGB色彩空间。
      static int CS_PYCC
      照片YCC转换颜色空间。
      static int CS_sRGB
      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 描述
      protected ColorSpace​(int type, int numcomponents)
      给定一个ColorSpace对象,给出一个颜色空间类型和组件数量。
    • 方法摘要

      所有方法  静态方法  接口方法  抽象方法  具体的方法 
      Modifier and Type 方法 描述
      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颜色空间中的值。
    • 构造方法详细信息

      • 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。
        结果
        true如果这是一个 CS_sRGB颜色空间, 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值。 toCIEXYZ的方法ICC_ColorSpace进一步的信息。

        参数
        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相对值,然后再传递给此方法。 fromCIEXYZ的方法ICC_ColorSpace进一步的信息。

        参数
        colorvalue - 一个长度至少为3的浮点数组
        结果
        长度等于此ColorSpace中组件数量的浮点数组
        异常
        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 - 如果组件小于0或大于numComponents - 1
        从以下版本开始:
        1.4
      • getMaxValue

        public float getMaxValue​(int component)
        返回指定组件的最大标准化颜色分量值。 该抽象类中的默认实现为所有组件返回1.0。 如果需要,子类应该覆盖此方法。
        参数
        component - 组件索引
        结果
        最大归一化分量值
        异常
        IllegalArgumentException - 如果组件小于0或大于numComponents - 1
        从以下版本开始:
        1.4