<!--
{
  "documentType" : "article",
  "framework" : "ColorSync",
  "identifier" : "/documentation/ColorSync/color-transforms",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Color transforms"
}
-->

# Color transforms

Convert color from one profile’s color space to another.

## Overview

A [`ColorSyncTransform`](/documentation/ColorSync/ColorSyncTransform) precomputes the conversion between a sequence of profiles. Color
conversion requires significant computation, so the way you apply a transform affects performance.
To convert pixels directly, call [`ColorSyncTransformConvert(_:_:_:_:_:_:_:_:_:_:_:_:)`](/documentation/ColorSync/ColorSyncTransformConvert(_:_:_:_:_:_:_:_:_:_:_:_:)). For
production code or large buffers, get better performance by extracting a ColorSync *code fragment*
with [`ColorSyncCreateCodeFragment(_:_:)`](/documentation/ColorSync/ColorSyncCreateCodeFragment(_:_:)) and running it through
<doc://com.apple.documentation/documentation/Accelerate/vImage>. Describe the layout of your pixel
buffers with the pixel-format constants in [Pixel format and data layout](/documentation/ColorSync/pixel-format).

## Topics

### Representing transforms

[`ColorSyncTransform`](/documentation/ColorSync/ColorSyncTransform)

A reference to a color transform that converts color data between profiles.

### Creating and applying a transform

[`ColorSyncTransformCreate`](/documentation/ColorSync/ColorSyncTransformCreate(_:_:))

Creates a color transform from a sequence of profiles.

[`ColorSyncTransformConvert`](/documentation/ColorSync/ColorSyncTransformConvert(_:_:_:_:_:_:_:_:_:_:_:_:))

Converts color data from a source layout to a destination layout using a color transform.

[`ColorSyncTransformGetProfileSequence`](/documentation/ColorSync/ColorSyncTransformGetProfileSequence(_:))

Returns the profile sequence used to create a color transform.

[`ColorSyncTransformCopyProperty`](/documentation/ColorSync/ColorSyncTransformCopyProperty(_:_:_:))

Copies a property from a color transform.

[`ColorSyncTransformSetProperty`](/documentation/ColorSync/ColorSyncTransformSetProperty(_:_:_:))

Sets a property on a color transform.

[`ColorSyncTransformGetTypeID`](/documentation/ColorSync/ColorSyncTransformGetTypeID())

Returns the type identifier for the `ColorSyncTransform` opaque type.

### Choosing rendering intents

[`kColorSyncRenderingIntent`](/documentation/ColorSync/kColorSyncRenderingIntent)

A key for the rendering intent to use for the profile in a profile-sequence dictionary.

[`kColorSyncRenderingIntentPerceptual`](/documentation/ColorSync/kColorSyncRenderingIntentPerceptual)

A [`kColorSyncRenderingIntent`](/documentation/ColorSync/kColorSyncRenderingIntent) value selecting the perceptual rendering intent.

[`kColorSyncRenderingIntentRelative`](/documentation/ColorSync/kColorSyncRenderingIntentRelative)

A [`kColorSyncRenderingIntent`](/documentation/ColorSync/kColorSyncRenderingIntent) value selecting the media-relative colorimetric rendering intent.

[`kColorSyncRenderingIntentSaturation`](/documentation/ColorSync/kColorSyncRenderingIntentSaturation)

A [`kColorSyncRenderingIntent`](/documentation/ColorSync/kColorSyncRenderingIntent) value selecting the saturation rendering intent.

[`kColorSyncRenderingIntentAbsolute`](/documentation/ColorSync/kColorSyncRenderingIntentAbsolute)

A [`kColorSyncRenderingIntent`](/documentation/ColorSync/kColorSyncRenderingIntent) value selecting the ICC-absolute colorimetric rendering intent.

[`kColorSyncRenderingIntentUseProfileHeader`](/documentation/ColorSync/kColorSyncRenderingIntentUseProfileHeader)

A [`kColorSyncRenderingIntent`](/documentation/ColorSync/kColorSyncRenderingIntent) value selecting the rendering intent stored in the profile header.

### Proofing and gamut checking

[`ColorSyncProfileCreateLink`](/documentation/ColorSync/ColorSyncProfileCreateLink(_:_:))

Creates a device link profile from an array of profiles.

[`kColorSyncTransformDeviceToDevice`](/documentation/ColorSync/kColorSyncTransformDeviceToDevice)

A [`kColorSyncTransformTag`](/documentation/ColorSync/kColorSyncTransformTag) value selecting the device-to-device conversion direction.

[`kColorSyncTransformGamutCheck`](/documentation/ColorSync/kColorSyncTransformGamutCheck)

A [`kColorSyncTransformTag`](/documentation/ColorSync/kColorSyncTransformTag) value that checks whether colors fall outside the destination gamut.

### Accessing transform properties

[`kColorSyncProfile`](/documentation/ColorSync/kColorSyncProfile)

A key for the profile object in a profile-sequence dictionary passed to [`ColorSyncTransformCreate(_:_:)`](/documentation/ColorSync/ColorSyncTransformCreate(_:_:)).

[`kColorSyncTransformCreator`](/documentation/ColorSync/kColorSyncTransformCreator)

A key for the name of the CMM that created the transform.

[`kColorSyncTransformDeviceToPCS`](/documentation/ColorSync/kColorSyncTransformDeviceToPCS)

A [`kColorSyncTransformTag`](/documentation/ColorSync/kColorSyncTransformTag) value selecting the device-to-PCS conversion direction.

[`kColorSyncTransformDstSpace`](/documentation/ColorSync/kColorSyncTransformDstSpace)

A key for the transform’s destination color space.

[`kColorSyncTransformInfo`](/documentation/ColorSync/kColorSyncTransformInfo)

A key for a dictionary of information about the transform.

[`kColorSyncTransformPCSToDevice`](/documentation/ColorSync/kColorSyncTransformPCSToDevice)

A [`kColorSyncTransformTag`](/documentation/ColorSync/kColorSyncTransformTag) value selecting the PCS-to-device conversion direction.

[`kColorSyncTransformPCSToPCS`](/documentation/ColorSync/kColorSyncTransformPCSToPCS)

A [`kColorSyncTransformTag`](/documentation/ColorSync/kColorSyncTransformTag) value selecting the PCS-to-PCS conversion direction.

[`kColorSyncTransformProfileSequnce`](/documentation/ColorSync/kColorSyncTransformProfileSequnce)

A key for the profile sequence used to create the transform.

[`kColorSyncTransformSrcSpace`](/documentation/ColorSync/kColorSyncTransformSrcSpace)

A key for the transform’s source color space.

[`kColorSyncTransformTag`](/documentation/ColorSync/kColorSyncTransformTag)

A key for the tag identifying which tags of the profile to use in a profile-sequence dictionary.

### Extracting a conversion for vImage

[`ColorSyncCreateCodeFragment`](/documentation/ColorSync/ColorSyncCreateCodeFragment(_:_:))

Creates a code fragment from a sequence of profiles.

[`kColorSyncTransformCodeFragmentType`](/documentation/ColorSync/kColorSyncTransformCodeFragmentType)

A key for the type of code fragment to create, or that the framework created.

[`kColorSyncTransformCodeFragmentMD5`](/documentation/ColorSync/kColorSyncTransformCodeFragmentMD5)

A key for the MD5 checksum of the code fragment.

### Reading conversion data sets

[`kColorSyncTransformFullConversionData`](/documentation/ColorSync/kColorSyncTransformFullConversionData)

A key for the full-conversion code fragment, containing all non-`NULL` components from the profile sequence.

[`kColorSyncTransformParametricConversionData`](/documentation/ColorSync/kColorSyncTransformParametricConversionData)

A key for the parametric code fragment, consisting only of parametric curves, matrices, and BPC components.

[`kColorSyncTransformSimplifiedConversionData`](/documentation/ColorSync/kColorSyncTransformSimplifiedConversionData)

A key for the simplified code fragment, collapsing the full conversion into one multi-dimensional table.

[`kColorSyncConversionBPC`](/documentation/ColorSync/kColorSyncConversionBPC)

A key for a black point compensation component, represented as a `CFArray` of `Float32` `CFNumber`s.

[`kColorSyncFixedPointRange`](/documentation/ColorSync/kColorSyncFixedPointRange)

A key for the fixed-point range of the conversion data.

### Reading curves and matrices

[`kColorSyncConversionParamCurve0`](/documentation/ColorSync/kColorSyncConversionParamCurve0)

A key for a parametric tone rendering curve of type 0, represented as a `CFArray` of seven `Float32` `CFNumber`s.

[`kColorSyncConversionParamCurve1`](/documentation/ColorSync/kColorSyncConversionParamCurve1)

A key for a parametric tone rendering curve of type 1, represented as a `CFArray` of seven `Float32` `CFNumber`s.

[`kColorSyncConversionParamCurve2`](/documentation/ColorSync/kColorSyncConversionParamCurve2)

A key for a parametric tone rendering curve of type 2, represented as a `CFArray` of seven `Float32` `CFNumber`s.

[`kColorSyncConversionParamCurve3`](/documentation/ColorSync/kColorSyncConversionParamCurve3)

A key for a parametric tone rendering curve of type 3, represented as a `CFArray` of seven `Float32` `CFNumber`s.

[`kColorSyncConversionParamCurve4`](/documentation/ColorSync/kColorSyncConversionParamCurve4)

A key for a parametric tone rendering curve of type 4, represented as a `CFArray` of seven `Float32` `CFNumber`s.

[`kColorSyncConversionMatrix`](/documentation/ColorSync/kColorSyncConversionMatrix)

A key for a conversion matrix component, represented as a `CFArray` of three `CFArray`s of four `Float32` `CFNumber`s.

### Reading lookup tables

[`kColorSyncConversion1DLut`](/documentation/ColorSync/kColorSyncConversion1DLut)

A key for a one-dimensional lookup table with interpolation, represented as `CFData` containing a `Float32` table.

[`kColorSyncConversion3DLut`](/documentation/ColorSync/kColorSyncConversion3DLut)

A key for a three-dimensional lookup table with interpolation, represented as `CFData`.

[`kColorSyncConversionNDLut`](/documentation/ColorSync/kColorSyncConversionNDLut)

A key for a multi-dimensional lookup table with interpolation, represented as `CFData` for N inputs and M outputs.

[`kColorSyncConversionGridPoints`](/documentation/ColorSync/kColorSyncConversionGridPoints)

A key for the number of grid points in a lookup table.

[`kColorSyncConversionChannelID`](/documentation/ColorSync/kColorSyncConversionChannelID)

A key for the identifier of the channel a conversion component applies to.

[`kColorSyncConversionInpChan`](/documentation/ColorSync/kColorSyncConversionInpChan)

A key for the number of input channels of a lookup table.

[`kColorSyncConversionOutChan`](/documentation/ColorSync/kColorSyncConversionOutChan)

A key for the number of output channels of a lookup table.

### Setting conversion quality

[`kColorSyncBestQuality`](/documentation/ColorSync/kColorSyncBestQuality)

A [`kColorSyncConvertQuality`](/documentation/ColorSync/kColorSyncConvertQuality) value that does not coalesce profile transforms; the default.

[`kColorSyncBlackPointCompensation`](/documentation/ColorSync/kColorSyncBlackPointCompensation)

A key whose `CFBooleanRef` value enables or disables black point compensation.

[`kColorSyncConvertQuality`](/documentation/ColorSync/kColorSyncConvertQuality)

A key for the quality of the conversion performed by the transform.

[`kColorSyncDraftQuality`](/documentation/ColorSync/kColorSyncDraftQuality)

A [`kColorSyncConvertQuality`](/documentation/ColorSync/kColorSyncConvertQuality) value that coalesces all transforms and does not interpolate.

[`kColorSyncNormalQuality`](/documentation/ColorSync/kColorSyncNormalQuality)

A [`kColorSyncConvertQuality`](/documentation/ColorSync/kColorSyncConvertQuality) value that coalesces all transforms.

### Handling HDR and extended range

[`kColorSyncExtendedRange`](/documentation/ColorSync/kColorSyncExtendedRange)

A key whose `CFBooleanRef` value enables or disables extended range.

[`kColorSyncConvertUseExtendedRange`](/documentation/ColorSync/kColorSyncConvertUseExtendedRange)

A key whose `CFBooleanRef` value allows float data to exceed the `[0.0, 1.0]` range.

[`kColorSyncTransformUseITU709OETF`](/documentation/ColorSync/kColorSyncTransformUseITU709OETF)

A key whose `CFBooleanRef` value uses the ITU-R BT.709 opto-electronic transfer function.

[`kColorSyncHDRDerivative`](/documentation/ColorSync/kColorSyncHDRDerivative)

A key for the HDR derivative to apply to the profile in a profile-sequence dictionary.

[`kColorSyncPQDerivative`](/documentation/ColorSync/kColorSyncPQDerivative)

A [`kColorSyncHDRDerivative`](/documentation/ColorSync/kColorSyncHDRDerivative) value selecting the PQ HDR derivative.

[`kColorSyncHLGDerivative`](/documentation/ColorSync/kColorSyncHLGDerivative)

A [`kColorSyncHDRDerivative`](/documentation/ColorSync/kColorSyncHDRDerivative) value selecting the HLG HDR derivative.

### Choosing a color management module

[`kColorSyncPreferredCMM`](/documentation/ColorSync/kColorSyncPreferredCMM)

A key whose value is the [`ColorSyncCMM`](/documentation/ColorSync/ColorSyncCMM) of the preferred CMM.

### Iterating asynchronously

[`COLORSYNC_ITERATE_ASYNC`](/documentation/ColorSync/COLORSYNC_ITERATE_ASYNC)



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)