Module java.desktop
Package java.awt.color

Class ICC_ProfileRGB

java.lang.Object
java.awt.color.ICC_Profile
java.awt.color.ICC_ProfileRGB
所有已实现的接口:
Serializable

public final class ICC_ProfileRGB extends ICC_Profile
ICC_ProfileRGB类是ICC_Profile类的子类,表示符合以下条件的配置文件:配置文件的颜色空间类型为RGB,并且配置文件包括redColorantTaggreenColorantTagblueColorantTagredTRCTaggreenTRCTagblueTRCTagmediaWhitePointTag标签。当满足上述条件时,ICC_Profile类中的getInstance方法将返回一个ICC_ProfileRGB对象。三分量、基于矩阵的输入配置文件和RGB显示配置文件是这种类型的配置文件的示例。

这个类的优点在于它提供了颜色转换矩阵和查找表,Java或本机方法可以直接使用这些矩阵和查找表来优化某些情况下的颜色转换。

要从设备配置文件的颜色空间转换到CIEXYZ配置文件连接空间,首先通过对应的色调再现曲线(TRC)查找将每个设备颜色分量线性化。然后,使用从RGB颜色成分构造的3x3矩阵将得到的线性RGB成分转换为CIEXYZ PCS。

                 linearR = redTRC[deviceR]

                 linearG = greenTRC[deviceG]

                 linearB = blueTRC[deviceB]

   _      _       _                                             _   _         _
  [  PCSX  ]     [  redColorantX  greenColorantX  blueColorantX  ] [  linearR  ]
  [        ]     [                                               ] [           ]
  [  PCSY  ]  =  [  redColorantY  greenColorantY  blueColorantY  ] [  linearG  ]
  [        ]     [                                               ] [           ]
  [_ PCSZ _]     [_ redColorantZ  greenColorantZ  blueColorantZ _] [_ linearB _]

 
反向转换通过将PCS XYZ成分通过上述3x3矩阵的逆转换为线性RGB成分,然后通过TRC的逆转换为设备RGB。
参见:
  • Field Details

    • REDCOMPONENT

      public static final int REDCOMPONENT
      用于获取红色分量的伽马值或TRC。
      参见:
    • GREENCOMPONENT

      public static final int GREENCOMPONENT
      用于获取绿色分量的伽马值或TRC。
      参见:
    • BLUECOMPONENT

      public static final int BLUECOMPONENT
      用于获取蓝色分量的伽马值或TRC。
      参见:
  • Method Details

    • getMediaWhitePoint

      public float[] getMediaWhitePoint()
      返回包含配置文件的mediaWhitePointTag组件的数组。
      返回:
      包含配置文件的mediaWhitePointTag的x、y和z组件的3元素float数组
    • getMatrix

      public float[][] getMatrix()
      返回由配置文件的redColorantTaggreenColorantTagblueColorantTag的X、Y和Z成分构成的3x3 float矩阵。

      此矩阵可用于配置文件的正向转换中的颜色转换--从配置文件颜色空间到CIEXYZ PCS。

      返回:
      包含配置文件的redColorantTaggreenColorantTagblueColorantTag的x、y和z组件的3x3 float数组
    • getGamma

      public float getGamma(int component)
      返回表示特定分量的色调再现曲线(TRC)的伽马值。组件参数必须是REDCOMPONENTGREENCOMPONENTBLUECOMPONENT之一。

      如果配置文件将相应分量的TRC表示为表而不是单个伽马值,则会引发异常。在这种情况下,实际表可以通过getTRC(int)方法获取。使用伽马值时,线性分量(R、G或B)计算如下:

                                                 gamma
                linearComponent = deviceComponent
      
       
      参数:
      component - 表示要检索其TRC的分量的ICC_ProfileRGB常量
      返回:
      作为浮点数的伽马值
      抛出:
      IllegalArgumentException - 如果分量不是REDCOMPONENTGREENCOMPONENTBLUECOMPONENT
      ProfileDataException - 如果配置文件未将相应TRC指定为单个伽马值
    • getTRC

      public short[] getTRC(int component)
      返回特定分量的TRC作为数组。分量必须是REDCOMPONENTGREENCOMPONENTBLUECOMPONENT。否则,返回的数组表示查找表,其中输入分量值在概念上处于范围[0.0, 1.0]。值0.0映射到数组索引0,值1.0映射到数组索引length-1。可能使用插值来生成不完全映射到数组中的索引的输出值。输出值也线性映射到范围[0.0, 1.0]。值0.0由数组值0x0000表示,值1.0由0xFFFF表示。换句话说,这些值实际上是无符号的short值,即使它们以short数组的形式返回。

      如果配置文件已将相应TRC指定为线性(伽马=1.0)或作为简单伽马值,则此方法会引发异常。在这种情况下,应使用getGamma(int)方法获取伽马值。

      参数:
      component - 表示要检索其TRC的分量的ICC_ProfileRGB常量:REDCOMPONENTGREENCOMPONENTBLUECOMPONENT
      返回:
      表示TRC的短数组
      抛出:
      IllegalArgumentException - 如果分量不是REDCOMPONENTGREENCOMPONENTBLUECOMPONENT
      ProfileDataException - 如果配置文件未将相应TRC指定为表