Class ICC_ProfileRGB
- All Implemented Interfaces:
Serializable
public class ICC_ProfileRGB extends ICC_Profile
ICC_ProfileRGB
class is a subclass of the ICC_Profile
class that represents profiles which meet the following criteria: the profile's color space type is RGB, and the profile includes the redColorantTag
, greenColorantTag
, blueColorantTag
, redTRCTag
, greenTRCTag
, blueTRCTag
, mediaWhitePointTag
tags. The getInstance
methods in the ICC_Profile
class will return an ICC_ProfileRGB
object when the above conditions are met. Three-component, matrix-based input profiles and RGB display profiles are examples of this type of profile. The advantage of this class is that it provides color transform matrices and lookup tables that Java or native methods can use directly to optimize color conversion in some cases.
To transform from a device profile color space to the CIEXYZ Profile Connection Space, each device color component is first linearized by a lookup through the corresponding tone reproduction curve (TRC). The resulting linear RGB components are converted to the CIEXYZ PCS using a a 3x3 matrix constructed from the RGB colorants.
linearR = redTRC[deviceR] linearG = greenTRC[deviceG] linearB = blueTRC[deviceB] _ _ _ _ _ _ [ PCSX ] [ redColorantX greenColorantX blueColorantX ] [ linearR ] [ ] [ ] [ ] [ PCSY ] = [ redColorantY greenColorantY blueColorantY ] [ linearG ] [ ] [ ] [ ] [_ PCSZ _] [_ redColorantZ greenColorantZ blueColorantZ _] [_ linearB _]The inverse transform is performed by converting PCS XYZ components to linear RGB components through the inverse of the above 3x3 matrix, and then converting linear RGB to device RGB through inverses of the TRCs.
- See Also:
Field Summary
Modifier and Type | Field | Description |
---|---|---|
static final int |
BLUECOMPONENT |
Used to get a gamma value or TRC for the blue component. |
static final int |
GREENCOMPONENT |
Used to get a gamma value or TRC for the green component. |
static final int |
REDCOMPONENT |
Used to get a gamma value or TRC for the red component. |
Fields declared in class java.awt.color.ICC_Profile
CLASS_ABSTRACT, CLASS_COLORSPACECONVERSION, CLASS_DEVICELINK, CLASS_DISPLAY, CLASS_INPUT, CLASS_NAMEDCOLOR, CLASS_OUTPUT, icAbsoluteColorimetric, icCurveCount, icCurveData, icHdrAttributes, icHdrCmmId, icHdrColorSpace, icHdrCreator, icHdrDate, icHdrDeviceClass, icHdrFlags, icHdrIlluminant, icHdrMagic, icHdrManufacturer, icHdrModel, icHdrPcs, icHdrPlatform, icHdrProfileID, icHdrRenderingIntent, icHdrSize, icHdrVersion, icICCAbsoluteColorimetric, icMediaRelativeColorimetric, icPerceptual, icRelativeColorimetric, icSaturation, icSigAbstractClass, icSigAToB0Tag, icSigAToB1Tag, icSigAToB2Tag, icSigBlueColorantTag, icSigBlueMatrixColumnTag, icSigBlueTRCTag, icSigBToA0Tag, icSigBToA1Tag, icSigBToA2Tag, icSigCalibrationDateTimeTag, icSigCharTargetTag, icSigChromaticAdaptationTag, icSigChromaticityTag, icSigCmyData, icSigCmykData, icSigColorantOrderTag, icSigColorantTableTag, icSigColorSpaceClass, icSigCopyrightTag, icSigCrdInfoTag, icSigDeviceMfgDescTag, icSigDeviceModelDescTag, icSigDeviceSettingsTag, icSigDisplayClass, icSigGamutTag, icSigGrayData, icSigGrayTRCTag, icSigGreenColorantTag, icSigGreenMatrixColumnTag, icSigGreenTRCTag, icSigHead, icSigHlsData, icSigHsvData, icSigInputClass, icSigLabData, icSigLinkClass, icSigLuminanceTag, icSigLuvData, icSigMeasurementTag, icSigMediaBlackPointTag, icSigMediaWhitePointTag, icSigNamedColor2Tag, icSigNamedColorClass, icSigOutputClass, icSigOutputResponseTag, icSigPreview0Tag, icSigPreview1Tag, icSigPreview2Tag, icSigProfileDescriptionTag, icSigProfileSequenceDescTag, icSigPs2CRD0Tag, icSigPs2CRD1Tag, icSigPs2CRD2Tag, icSigPs2CRD3Tag, icSigPs2CSATag, icSigPs2RenderingIntentTag, icSigRedColorantTag, icSigRedMatrixColumnTag, icSigRedTRCTag, icSigRgbData, icSigScreeningDescTag, icSigScreeningTag, icSigSpace2CLR, icSigSpace3CLR, icSigSpace4CLR, icSigSpace5CLR, icSigSpace6CLR, icSigSpace7CLR, icSigSpace8CLR, icSigSpace9CLR, icSigSpaceACLR, icSigSpaceBCLR, icSigSpaceCCLR, icSigSpaceDCLR, icSigSpaceECLR, icSigSpaceFCLR, icSigTechnologyTag, icSigUcrBgTag, icSigViewingCondDescTag, icSigViewingConditionsTag, icSigXYZData, icSigYCbCrData, icSigYxyData, icTagReserved, icTagType, icXYZNumberX
Method Summary
Modifier and Type | Method | Description |
---|---|---|
float |
getGamma |
Returns a gamma value representing the tone reproduction curve (TRC) for a particular component. |
float[][] |
getMatrix() |
Returns a 3x3 float matrix constructed from the X, Y, and Z components of the profile's redColorantTag , greenColorantTag , and blueColorantTag . |
float[] |
getMediaWhitePoint() |
Returns an array that contains the components of the profile's mediaWhitePointTag . |
short[] |
getTRC |
Returns the TRC for a particular component as an array. |
Methods declared in class java.awt.color.ICC_Profile
finalize, getColorSpaceType, getData, getData, getInstance, getInstance, getInstance, getInstance, getMajorVersion, getMinorVersion, getNumComponents, getPCSType, getProfileClass, readResolve, setData, write, write
Field Details
REDCOMPONENT
public static final int REDCOMPONENT
- See Also:
GREENCOMPONENT
public static final int GREENCOMPONENT
- See Also:
BLUECOMPONENT
public static final int BLUECOMPONENT
- See Also:
Method Details
getMediaWhitePoint
public float[] getMediaWhitePoint()
mediaWhitePointTag
.- Returns:
- a 3-element
float
array containing the x, y, and z components of the profile'smediaWhitePointTag
getMatrix
public float[][] getMatrix()
float
matrix constructed from the X, Y, and Z components of the profile's redColorantTag
, greenColorantTag
, and blueColorantTag
. This matrix can be used for color transforms in the forward direction of the profile--from the profile color space to the CIEXYZ PCS.
- Returns:
- a 3x3
float
array that contains the x, y, and z components of the profile'sredColorantTag
,greenColorantTag
, andblueColorantTag
getGamma
public float getGamma(int component)
REDCOMPONENT
, GREENCOMPONENT
, or BLUECOMPONENT
. If the profile represents the TRC for the corresponding component as a table rather than a single gamma value, an exception is thrown. In this case the actual table can be obtained through the getTRC(int)
method. When using a gamma value, the linear component (R, G, or B) is computed as follows:
gamma linearComponent = deviceComponent
- Parameters:
-
component
- theICC_ProfileRGB
constant that represents the component whose TRC you want to retrieve - Returns:
- the gamma value as a float
- Throws:
-
IllegalArgumentException
- if the component is notREDCOMPONENT
,GREENCOMPONENT
, orBLUECOMPONENT
-
ProfileDataException
- if the profile does not specify the corresponding TRC as a single gamma value
getTRC
public short[] getTRC(int component)
REDCOMPONENT
, GREENCOMPONENT
, or BLUECOMPONENT
. Otherwise the returned array represents a lookup table where the input component value is conceptually in the range [0.0, 1.0]. Value 0.0 maps to array index 0 and value 1.0 maps to array index length-1
. Interpolation might be used to generate output values for input values that do not map exactly to an index in the array. Output values also map linearly to the range [0.0, 1.0]. Value 0.0 is represented by an array value of 0x0000 and value 1.0 by 0xFFFF. In other words, the values are really unsigned short
values even though they are returned in a short
array. If the profile has specified the corresponding TRC as linear (gamma = 1.0) or as a simple gamma value, this method throws an exception. In this case, the getGamma(int)
method should be used to get the gamma value.
- Parameters:
-
component
- theICC_ProfileRGB
constant that represents the component whose TRC you want to retrieve:REDCOMPONENT
,GREENCOMPONENT
, orBLUECOMPONENT
- Returns:
- a short array representing the TRC
- Throws:
-
IllegalArgumentException
- if the component is notREDCOMPONENT
,GREENCOMPONENT
, orBLUECOMPONENT
-
ProfileDataException
- if the profile does not specify the corresponding TRC as a table
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/java/awt/color/ICC_ProfileRGB.html