====== 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.