Main Content


Read ICC profile



profile = iccread(filename) reads the International Color Consortium (ICC) color profile data from the file specified by the input filename.


iccread can read profiles that conform with either Version 2 (ICC.1:2001-04) or Version 4 (ICC.1:2001-12) of the ICC specification. For more information about ICC profiles, visit the ICC website,


collapse all

Read the International Color Consortium (ICC) profile that describes a typical PC computer monitor.

profile = iccread('sRGB.icm')
profile = struct with fields:
               Header: [1x1 struct]
             TagTable: {17x3 cell}
            Copyright: 'Copyright (c) 1999 Hewlett-Packard Company'
          Description: [1x1 struct]
      MediaWhitePoint: [0.9505 1 1.0891]
      MediaBlackPoint: [0 0 0]
        DeviceMfgDesc: [1x1 struct]
      DeviceModelDesc: [1x1 struct]
      ViewingCondDesc: [1x1 struct]
    ViewingConditions: [1x1 struct]
            Luminance: [76.0365 80 87.1246]
          Measurement: [1x1 struct]
           Technology: 'Cathode Ray Tube Display'
               MatTRC: [1x1 struct]
          PrivateTags: {}
             Filename: 'sRGB.icm'

Determine the source color space. The profile header provides general information about the profile, such as its class, color space, and PCS.

ans = 

Input Arguments

collapse all

Name of the file containing ICC profile, specified as a character vector or string scalar. The file can be either an ICC profile file or a TIFF file containing an embedded ICC profile. To determine if a TIFF file contains an embedded ICC profile, use the imfinfo function to get information about the file and look for the ICCProfileOffset field in the output.


If you specify only the file name without its path, iccread searches for the file in the current folder, a folder on the MATLAB® path, or in the folder returned by iccroot in that order.

Data Types: char | string

Output Arguments

collapse all

ICC profile data, returned as a structure array. The fields contain the data structures (called tags) defined in the ICC specification. The number of fields in profile depends on the profile class and the choices made by the profile creator. iccread returns all the tags for a given profile, both public and private. Private tags and certain public tags are left as encoded uint8 data. The following table lists fields that are found in any profile structure generated by iccread.


Data Type



1-by-1 struct array

Profile header fields.


n-by-3 cell array

Profile tag table.


Character vector

Profile copyright notice.


1-by-1 struct array

Profile description. The String field in this structure contains a character vector describing the profile.


double array

XYZ stimulus values of the device's media white point.


m-by-2 cell array

Contents of all the private tags or tags not defined in the ICC specifications. The tag signatures are in the first column, and the contents of the tags are in the second column. The iccread leaves the contents of these tags in unsigned 8-bit encoding.


Character vector

Name of the file containing the profile.

Also, profile might contain one or more of the following transforms:

  • Three-component, matrix-based transform: A simple transform that is often used to transform between the RGB and XYZ color spaces. If this transform is present, profile contains a field called MatTRC.

  • N-component look-up-table (LUT) based transform: A transform that is used for transforming between color spaces that have a more complex relationship. This type of transform is found in any of the following fields in profile:













Data Types: struct


  • ICC profiles provide color management systems with the information necessary to convert color data between native device color spaces and device-independent color spaces, called the Profile Connection Space (PCS). You can use the profile as the source or destination profile with the makecform or applycform functions to compute color space transformations.

Version History

Introduced before R2006a