User Tools

Site Tools


Color Management with Imagemagick

The Imagemagick package provides several tools that can be used for several tasks related to color management, color profiles, etc.

  • Inspect the file format.
  • Convert to and from various graphic formats.
  • Convert to and from various color profiles.
  • Apply, change or strip embedded color profiles.

The notes in this page are tested with Imagemagick 6.9.10 on a Debian 10 Buster installation.

Inspect a file

This command display the image format, bit depth, colorspace, embeddedd ICC profile, max and min values of the color components, etc.

identify -verbose image.tiff
Image: image.tiff
  Colorspace: sRGB
  Depth: 16-bit
  Channel statistics:
    Pixels: 1572864
      min: 1024  (0.0156252)
      max: 64005 (0.976654)
      mean: 22070.8 (0.336779)
      standard deviation: 20844.1 (0.318061)

When you convert an image from a colorspace to another, you can check how much the max and min values for each channel have changed, etc.

You can also extract just the parameter you need:

convert image.tiff -print "%[colorspace]\n" null:
convert image.tiff -print "%[profiles]\n" null:
convert image.tiff -print "%[profile:icc]\n" null:

Remove the color profile from an image

This command will strip any comment and profile from a source image, it does not alter the pixel data values (WARNING: it will remove the Exif.Photo.UserComment comment too):

convert image.tiff -strip image-no-profile.tiff

Add a color profile to an image

This command will strip any comment and profile from a source image, then it adds a color profile from an ICC file, embedding it into the image, without altering the pixel data values (WARNING: it will remove the Exif.Photo.UserComment comment too):

convert image.tiff -strip -profile canon9000fmarkii.icc image-profile-canon.tiff

Convert an image to another color profile

The following command will ignore any embedded profile (-strip), apply the Canon custom profile, than convert the image to the standard sRGB color profile (color space). Finally it removes from the resulting image any metadata about profile:

convert image.tiff -strip -profile canon9000fmarkii.icc -profile sRGB.icc -strip image-srgb.tiff

The resulting image will not have any metadata about color profile, so the sRGB will be assumed by default. The pixel data values are converted from the original Canon colorspace to the sRGB one (one-way lossy operation). NOTICE: you have to provide the canon9000fmarkii.icc file (see above) and the sRGB.icc one; the Debian package colord-data provides le latter into /usr/share/color/icc/colord/.

Extract the embedded color profile from an image

This command will extract the ICC file embedded into a file:

convert image.tiff image-color-profile.icc

It is not possible to extract the ICC file if the colorspace is just declared into the metadata, but not embedded as a profile. In this case you can search instead into the /usr/share/color/icc/colord/ folder for well-known ICC files installed by the colord-data package.

Examine an ICC color profile

We can use the command line tool exiftool from the Debian package libimage-exiftool-perl.

To examine a profile embedded into an image:

exiftool -icc_profile:* photo.jpg

To examine an ICC profile file:

exiftool profile.icc

Set a different colorspace

This command will change the colorspace of an image. Just the metadata is changed, no data conversion is performed:

convert image.tiff -set colorspace RGB    image_rgb.png
convert image.tiff -set colorspace CIELab image_lab.tiff

While the source image is into the sRGB colorspace, the created files will be into the RGB and CIELab ones:

convert image.tiff     -print "%[colorspace]\n" null:
# >>> sRGB
convert image_rgb.png  -print "%[colorspace]\n" null:
# >>> RGB
convert image_lab.tiff -print "%[colorspace]\n" null:
# >>> CIELab

NOTICE that some combinations of image format and colorspace are not allowed, e.g. you cannot create a TIFF file into the RGB colorspace, or a PNG file into the CIELab colorspace.

Convert to a different colorspace

This command will update metadata about the used colorspace, pixel data values are transformed into the new colorspace:

convert image.tiff -colorspace CIELab image_lab.tiff

Some known colorspaces are: sRGB, RGB, CIELab, Gray. To list colorspaces supported by Imagemagick, execute the command convert -list colorspace.

An ICC color profile is not embedded into the file, so the software used to open the resulting file must be aware of that colorspace by itself.

doc/appunti/software/imagemagick_color_management.txt · Last modified: 2020/01/02 17:38 by niccolo