Table of Contents
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 Red: 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.