APIdia Launch Partner
Top Description Inners Fields Constructors Methods
java.awt.color

public sealed Class ICC_Profile

extends Object
implements Serializable
permits ICC_ProfileGray, ICC_ProfileRGB
Class Inheritance
All Implemented Interfaces
java.io.Serializable
Known Direct Subclasses
java.awt.color.ICC_ProfileGray, java.awt.color.ICC_ProfileRGB
Imports
java.io.BufferedInputStream, .File, .FileInputStream, .FileOutputStream, .IOException, .InputStream, .InvalidObjectException, .ObjectInputStream, .ObjectOutputStream, .ObjectStreamException, .OutputStream, .Serial, .Serializable, java.util.Objects, .StringTokenizer, sun.awt.AWTAccessor, sun.java2d.cmm.BuiltinProfileInfo, .CMSManager, .PCMM, .Profile, .ProfileDataVerifier

A representation of color profile data for device independent and device dependent color spaces based on the International Color Consortium Specification ICC.1:2001-12, File Format for Color Profiles, (see https://www.color.org).

An ICC_ColorSpace object can be constructed from an appropriate ICC_Profile. Typically, an ICC_ColorSpace would be associated with an ICC Profile which is either an input, display, or output profile (see the ICC specification). There are also device link, abstract, color space conversion, and named color profiles. These are less useful for tagging a color or image, but are useful for other purposes (in particular device link profiles can provide improved performance for converting from one device's color space to another's).

ICC Profiles represent transformations from the color space of the profile (e.g. a monitor) to a Profile Connection Space (PCS). Profiles of interest for tagging images or colors have a PCS which is one of the two specific device independent spaces (one CIEXYZ space and one CIELab space) defined in the ICC Profile Format Specification. Most profiles of interest either have invertible transformations or explicitly specify transformations going both directions.

See Also
ICC_ColorSpace

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static interface
ICC_Profile.BuiltInProfile

The lazy registry of singleton profile objects for specific built-in color spaces defined in the ColorSpace class (e.g. CS_sRGB), see getInstance(int cspace) factory method.

Field Summary

Modifier and TypeField and Description
private final transient BuiltinProfileInfo
builtInInfo

Stores information about a built-in profile without triggering profile loading.

public static final int
CLASS_ABSTRACT

Profile class is abstract.

public static final int
CLASS_COLORSPACECONVERSION

Profile class is color space conversion.

public static final int
CLASS_DEVICELINK

Profile class is device link.

public static final int
CLASS_DISPLAY

Profile class is display.

public static final int
CLASS_INPUT

Profile class is input.

public static final int
CLASS_NAMEDCOLOR

Profile class is named color.

public static final int
CLASS_OUTPUT

Profile class is output.

private transient volatile Profile
cmmProfile

The implementation specific CMM profile, null if this ICC_Profile is not activated by the cmmProfile() method.

public static final int
icAbsoluteColorimetric

ICC Profile Rendering Intent: AbsoluteColorimetric.

private int
iccProfileSerializedDataVersion

Version of the format of additional serialized data in the stream.

public static final int
icCurveCount

ICC Profile Constant: curveType count.

public static final int
icCurveData

ICC Profile Constant: curveType data.

public static final int
icHdrAttributes

ICC Profile Header Location: device attributes.

public static final int
icHdrCmmId

ICC Profile Header Location: CMM for this profile.

public static final int
icHdrColorSpace

ICC Profile Header Location: color space of data.

public static final int
icHdrCreator

ICC Profile Header Location: profile creator.

public static final int
icHdrDate

ICC Profile Header Location: date profile was created.

public static final int
icHdrDeviceClass

ICC Profile Header Location: type of profile.

public static final int
icHdrFlags

ICC Profile Header Location: various bit settings.

public static final int
icHdrIlluminant

ICC Profile Header Location: profile illuminant.

public static final int
icHdrMagic

ICC Profile Header Location: icMagicNumber.

public static final int
icHdrManufacturer

ICC Profile Header Location: device manufacturer.

public static final int
icHdrModel

ICC Profile Header Location: device model number.

public static final int
icHdrPcs

ICC Profile Header Location: PCS - XYZ or Lab only.

public static final int
icHdrPlatform

ICC Profile Header Location: primary platform.

public static final int
icHdrProfileID

ICC Profile Header Location: profile's ID.

public static final int
icHdrRenderingIntent

ICC Profile Header Location: rendering intent.

public static final int
icHdrSize

ICC Profile Header Location: profile size in bytes.

public static final int
icHdrVersion

ICC Profile Header Location: format version number.

public static final int
icICCAbsoluteColorimetric

ICC Profile Rendering Intent: ICC-AbsoluteColorimetric.

public static final int
icMediaRelativeColorimetric

ICC Profile Rendering Intent: Media-RelativeColorimetric.

public static final int
icPerceptual

ICC Profile Rendering Intent: Perceptual.

public static final int
icRelativeColorimetric

ICC Profile Rendering Intent: RelativeColorimetric.

public static final int
icSaturation

ICC Profile Rendering Intent: Saturation.

public static final int
icSigAbstractClass

ICC Profile Class Signature: 'abst'.

public static final int
icSigAToB0Tag

ICC Profile Tag Signature: 'A2B0'.

public static final int
icSigAToB1Tag

ICC Profile Tag Signature: 'A2B1'.

public static final int
icSigAToB2Tag

ICC Profile Tag Signature: 'A2B2'.

public static final int
icSigBlueColorantTag

ICC Profile Tag Signature: 'bXYZ'.

public static final int
icSigBlueMatrixColumnTag

ICC Profile Tag Signature: 'bXYZ'.

public static final int
icSigBlueTRCTag

ICC Profile Tag Signature: 'bTRC'.

public static final int
icSigBToA0Tag

ICC Profile Tag Signature: 'B2A0'.

public static final int
icSigBToA1Tag

ICC Profile Tag Signature: 'B2A1'.

public static final int
icSigBToA2Tag

ICC Profile Tag Signature: 'B2A2'.

public static final int
icSigCalibrationDateTimeTag

ICC Profile Tag Signature: 'calt'.

public static final int
icSigCharTargetTag

ICC Profile Tag Signature: 'targ'.

public static final int
icSigChromaticAdaptationTag

ICC Profile Tag Signature: 'chad'.

public static final int
icSigChromaticityTag

ICC Profile Tag Signature: 'chrm'.

public static final int
icSigCmyData

ICC Profile Color Space Type Signature: 'CMY '.

public static final int
icSigCmykData

ICC Profile Color Space Type Signature: 'CMYK'.

public static final int
icSigColorantOrderTag

ICC Profile Tag Signature: 'clro'.

public static final int
icSigColorantTableTag

ICC Profile Tag Signature: 'clrt'.

public static final int
icSigColorSpaceClass

ICC Profile Class Signature: 'spac'.

public static final int
icSigCopyrightTag

ICC Profile Tag Signature: 'cprt'.

public static final int
icSigCrdInfoTag

ICC Profile Tag Signature: 'crdi'.

public static final int
icSigDeviceMfgDescTag

ICC Profile Tag Signature: 'dmnd'.

public static final int
icSigDeviceModelDescTag

ICC Profile Tag Signature: 'dmdd'.

public static final int
icSigDeviceSettingsTag

ICC Profile Tag Signature: 'devs'.

public static final int
icSigDisplayClass

ICC Profile Class Signature: 'mntr'.

public static final int
icSigGamutTag

ICC Profile Tag Signature: 'gamt'.

public static final int
icSigGrayData

ICC Profile Color Space Type Signature: 'GRAY'.

public static final int
icSigGrayTRCTag

ICC Profile Tag Signature: 'kTRC'.

public static final int
icSigGreenColorantTag

ICC Profile Tag Signature: 'gXYZ'.

public static final int
icSigGreenMatrixColumnTag

ICC Profile Tag Signature: 'gXYZ'.

public static final int
icSigGreenTRCTag

ICC Profile Tag Signature: 'gTRC'.

public static final int
icSigHead

ICC Profile Tag Signature: 'head' - special.

public static final int
icSigHlsData

ICC Profile Color Space Type Signature: 'HLS'.

public static final int
icSigHsvData

ICC Profile Color Space Type Signature: 'HSV'.

public static final int
icSigInputClass

ICC Profile Class Signature: 'scnr'.

public static final int
icSigLabData

ICC Profile Color Space Type Signature: 'Lab '.

public static final int
icSigLinkClass

ICC Profile Class Signature: 'link'.

public static final int
icSigLuminanceTag

ICC Profile Tag Signature: 'lumi'.

public static final int
icSigLuvData

ICC Profile Color Space Type Signature: 'Luv '.

public static final int
icSigMeasurementTag

ICC Profile Tag Signature: 'meas'.

public static final int
icSigMediaBlackPointTag

ICC Profile Tag Signature: 'bkpt'.

public static final int
icSigMediaWhitePointTag

ICC Profile Tag Signature: 'wtpt'.

public static final int
icSigNamedColor2Tag

ICC Profile Tag Signature: 'ncl2'.

public static final int
icSigNamedColorClass

ICC Profile Class Signature: 'nmcl'.

public static final int
icSigOutputClass

ICC Profile Class Signature: 'prtr'.

public static final int
icSigOutputResponseTag

ICC Profile Tag Signature: 'resp'.

public static final int
icSigPreview0Tag

ICC Profile Tag Signature: 'pre0'.

public static final int
icSigPreview1Tag

ICC Profile Tag Signature: 'pre1'.

public static final int
icSigPreview2Tag

ICC Profile Tag Signature: 'pre2'.

public static final int
icSigProfileDescriptionTag

ICC Profile Tag Signature: 'desc'.

public static final int
icSigProfileSequenceDescTag

ICC Profile Tag Signature: 'pseq'.

public static final int
icSigPs2CRD0Tag

ICC Profile Tag Signature: 'psd0'.

public static final int
icSigPs2CRD1Tag

ICC Profile Tag Signature: 'psd1'.

public static final int
icSigPs2CRD2Tag

ICC Profile Tag Signature: 'psd2'.

public static final int
icSigPs2CRD3Tag

ICC Profile Tag Signature: 'psd3'.

public static final int
icSigPs2CSATag

ICC Profile Tag Signature: 'ps2s'.

public static final int
icSigPs2RenderingIntentTag

ICC Profile Tag Signature: 'ps2i'.

public static final int
icSigRedColorantTag

ICC Profile Tag Signature: 'rXYZ'.

public static final int
icSigRedMatrixColumnTag

ICC Profile Tag Signature: 'rXYZ'.

public static final int
icSigRedTRCTag

ICC Profile Tag Signature: 'rTRC'.

public static final int
icSigRgbData

ICC Profile Color Space Type Signature: 'RGB '.

public static final int
icSigScreeningDescTag

ICC Profile Tag Signature: 'scrd'.

public static final int
icSigScreeningTag

ICC Profile Tag Signature: 'scrn'.

public static final int
icSigSpace2CLR

ICC Profile Color Space Type Signature: '2CLR'.

public static final int
icSigSpace3CLR

ICC Profile Color Space Type Signature: '3CLR'.

public static final int
icSigSpace4CLR

ICC Profile Color Space Type Signature: '4CLR'.

public static final int
icSigSpace5CLR

ICC Profile Color Space Type Signature: '5CLR'.

public static final int
icSigSpace6CLR

ICC Profile Color Space Type Signature: '6CLR'.

public static final int
icSigSpace7CLR

ICC Profile Color Space Type Signature: '7CLR'.

public static final int
icSigSpace8CLR

ICC Profile Color Space Type Signature: '8CLR'.

public static final int
icSigSpace9CLR

ICC Profile Color Space Type Signature: '9CLR'.

public static final int
icSigSpaceACLR

ICC Profile Color Space Type Signature: 'ACLR'.

public static final int
icSigSpaceBCLR

ICC Profile Color Space Type Signature: 'BCLR'.

public static final int
icSigSpaceCCLR

ICC Profile Color Space Type Signature: 'CCLR'.

public static final int
icSigSpaceDCLR

ICC Profile Color Space Type Signature: 'DCLR'.

public static final int
icSigSpaceECLR

ICC Profile Color Space Type Signature: 'ECLR'.

public static final int
icSigSpaceFCLR

ICC Profile Color Space Type Signature: 'FCLR'.

public static final int
icSigTechnologyTag

ICC Profile Tag Signature: 'tech'.

public static final int
icSigUcrBgTag

ICC Profile Tag Signature: 'bfd '.

public static final int
icSigViewingCondDescTag

ICC Profile Tag Signature: 'vued'.

public static final int
icSigViewingConditionsTag

ICC Profile Tag Signature: 'view'.

public static final int
icSigXYZData

ICC Profile Color Space Type Signature: 'XYZ '.

public static final int
icSigYCbCrData

ICC Profile Color Space Type Signature: 'YCbr'.

public static final int
icSigYxyData

ICC Profile Color Space Type Signature: 'Yxy '.

public static final int
icTagReserved

ICC Profile Constant: reserved.

public static final int
icTagType

ICC Profile Constant: tag type signature.

public static final int
icXYZNumberX

ICC Profile Constant: XYZNumber X.

private transient ICC_Profile
private static final long
serialVersionUID

Use serialVersionUID from JDK 1.2 for interoperability.

Constructor Summary

AccessConstructor and Description
pack-priv
ICC_Profile(Profile p)

Constructs an ICC_Profile object with a given ID.

pack-priv
ICC_Profile(BuiltinProfileInfo bpi)

Constructs an ICC_Profile object whose loading will be deferred.

Method Summary

Modifier and TypeMethod and Description
private static void
checkRenderingIntent(byte[] data)

private Profile

Returns:

the implementation specific CMM profile, or null
cmmProfile
()

Activates and returns the deferred standard profiles.

public int

Returns:

one of the color space type constants defined in the ColorSpace class
getColorSpaceType
()

Returns the color space type.

private static int
getColorSpaceType(byte[] data)

public byte[]

Returns:

a byte array that contains the profile data
getData
()

Returns a byte array corresponding to the data of this ICC_Profile.

public byte[]

Returns:

a byte array that contains the tagged data element. Returns null if the specified tag doesn't exist.
getData
(int
the ICC tag signature for the data element you want to get
tagSignature
)

Returns a particular tagged data element from the profile as a byte array.

pack-priv static byte[]

Returns:

a non-null byte array containing the tag data
getData
(Profile
the CMM profile from which to retrieve the tag data
p
,
int
the ICC tag signature for the data to retrieve
tagSignature
)

Returns a particular tagged data element from the profile as a non-null byte array.

pack-priv float

Returns:

the gamma value as a float
getGamma
(int tagSignature)

Returns a gamma value representing a tone reproduction curve (TRC).

public static ICC_Profile

Returns:

an ICC_Profile object corresponding to the data in the specified data array
getInstance
(byte[]
the specified ICC Profile data
data
)

Constructs an ICC_Profile object corresponding to the data in a byte array.

public static ICC_Profile

Returns:

an ICC_Profile object corresponding to the specified ColorSpace type
getInstance
(int
the type of color space to create a profile for. The specified type is one of the color space constants defined in the ColorSpace class.
cspace
)

Constructs an ICC_Profile corresponding to one of the specific color spaces defined by the ColorSpace class (for example CS_sRGB).

public static ICC_Profile

Returns:

an ICC_Profile object corresponding to the data in the specified file
getInstance
(String
the file that contains the data for the profile
fileName
)

Constructs an ICC_Profile corresponding to the data in a file.

public static ICC_Profile

Returns:

an ICC_Profile object corresponding to the data in the specified InputStream
getInstance
(InputStream
the input stream from which to read the profile data
s
)

Constructs an ICC_Profile corresponding to the data in an InputStream.

public int

Returns:

the major version of the profile
getMajorVersion
()

Returns profile major version.

pack-priv float[]
getMediaWhitePoint()

Returns a float array of length 3 containing the X, Y, and Z components of the mediaWhitePointTag in the ICC profile.

public int

Returns:

the minor version of the profile
getMinorVersion
()

Returns profile minor version.

public int

Returns:

the number of color components in the profile's input color space
getNumComponents
()

Returns the number of color components in the "input" color space of this profile.

public int

Returns:

one of the color space type constants defined in the ColorSpace class
getPCSType
()

Returns the color space type of the Profile Connection Space (PCS).

private static int
getPCSType(byte[] data)

public int

Returns:

one of the predefined profile class constants
getProfileClass
()

Returns the profile class.

private static int
getProfileClass(byte[] data)

pack-priv static byte[]
private static File
getProfileFile(String fileName)

fileName may be an absolute or a relative file specification.

private static InputStream
getStandardProfileInputStream(String fileName)

Returns a stream corresponding to a built-in profile specified by fileName.

pack-priv short[]

Returns:

a short array representing the TRC
getTRC
(int tagSignature)

Returns the TRC as an array of shorts.

pack-priv final float[]
getXYZTag(int tagSignature)

Returns a float array of length 3 containing the X, Y, and Z components encoded in an XYZType tag.

private static int
iccCStoJCS(int theColorSpaceSig)

Convert an ICC color space signature into a Java color space type.

private static int
intFromBigEndian(byte[] array, int index)

private static boolean
isChildOf(File f, String dirName)

Checks whether given file resides inside give directory.

private void
readObject(ObjectInputStream
stream used for deserialization
s
)

Reads default serializable fields from the stream.

protected Object

Returns:

ICC_Profile object for profile registered with CMM
readResolve
()

Resolves instances being deserialized into instances registered with CMM.

public void
setData(int
the ICC tag signature for the data element you want to set
tagSignature
,
byte[]
the data to set for the specified tag signature
tagData
)

Sets a particular tagged data element in the profile from a byte array.

private static short
shortFromBigEndian(byte[] array, int index)

private static void
verifyHeader(byte[] data)

public void
write(String
the file to write the profile data to
fileName
)

Write this ICC_Profile to a file.

public void
write(OutputStream
the stream to write the profile data to
s
)

Write this ICC_Profile to an OutputStream.

private void
writeObject(ObjectOutputStream
stream used for serialization
s
)

Writes default serializable fields to the stream.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait