ART 16.4.1 doesn't write ColorSpace tag to exports

I might be doing something wrong but if I am, I don’t know what it is. Please educate me.

ART stable and @gaaned92’s 1.16.4-16-gce71db479 nightly on Windows 11 Home. Same behavior either way.

The ColorSpace EXIF tag isn’t populated from exported *.CR[23] files (I have only Canon raws to test).

The raw files are attached here if needed. Exports and *.arps can be downloaded from my Google drive since they’re ~200MB all together: Pub – Google Drive

The colorspace data is in the raw files…

C:\data\images\working>exiv2 -P E -K Exif.Photo.ColorSpace "IMG_5200.CR3"
Exif.Photo.ColorSpace                        Short       1  sRGB

C:\data\images\working>exiv2 -P E -K Exif.Photo.ColorSpace "IMG_8303.CR2"
Warning: Directory Canon has an unexpected next pointer; ignored.
Exif.Photo.ColorSpace                        Short       1  sRGB

(I’m not sure what the exiv2 warning is about, but the CR3 results are identical and there’s no warning so it’s probably irrelevant here.)

…and the Meta tab in ART shows it, but it’s not there in the exports…

C:\data\images\working\converted>exiv2 -P E -K Exif.Photo.ColorSpace "IMG_5200.jpg"

C:\data\images\working\converted>exiv2 -P E -K Exif.Photo.ColorSpace "IMG_5200.tif"

C:\data\images\working\converted>exiv2 -P E -K Exif.Photo.ColorSpace "IMG_8303.jpg"

C:\data\images\working\converted>exiv2 -P E -K Exif.Photo.ColorSpace "IMG_8303.tif"

Neither exiftool nor XnView MP return anything for this tag either. I looked at all tags but there was no other colorspace info.

Am I doing something wrong?


P.S. - After writing this, I just now tried the CR2 with the RawTherapee 5.9 rc1 (since CR3 metadata isn’t supported) and it doesn’t write it either. Am I looking in the wrong place? Is it in fact being written but my tools aren’t finding it?

IMG_5200.CR3 (39.8 MB)
IMG_8303.CR2 (7.4 MB)

What are you trying to do with the tag? Art embeds the selected output icc profile in the jpg, so if your image viewer is colour managed it shouldn’t need any other tag. So, can you elaborate on the use case? Thanks

I sense an education coming on… :laughing:

There’s no specific use case, this came about indirectly. I was doing something unrelated to ART (in Affinity Photo, actually) when I noticed a color shift in a pano it stitched. As a part of that testing I converted some CR3s to TIFFs & JPGs with ART. That’s when I noticed that a previous JPG (possibly converted with RT months ago, maybe?) had the ColorSpace tag populated but the ‘new’ ART TIFFs didn’t. That “discovery” launched me into this investigation.

But apparently it was a misguided (or at least under-informed) investigation.

I thought (assumed, actually! :slight_smile: ) that the ColorSpace EXIF tag was the mechanism by which profile / color info was stored & communicated. Obviously not. Is it just more of a non-essential label?

At the risk of being pedantic, the same holds true for TIFFs?

I’m glad to be corrected and even more glad there’s no issue with ART.


I don’t know if there are apps that take the tag into account, to be honest. ART uses ICC profiles for all the formats supported natively, so JPG, TIFF and PNG. It also uses ICC profiles for several of the “official” output plugins, except when the file format has other conventional ways to specify color space information (e.g. for exr or avif other mechanisms are used).


1 Like

Most cameras when making a JPEG, will use the ColorSpace tag to commumicate the colorspace thtey encoded the image, usually either sRGB or AdobeRGB, and not embed the appropriate color profile. A lot of software will use that information as a fallback, and use their own profile to do the transforms.

Thing is, there’s not one universally accepted definition of sRGB - Elle Stone has a whole article on it:

Will the Real sRGB Profile Please Stand Up?

So, YMMV using just a tag name. If an image contains an embedded profile, it is assumed that image was encoded using it, so that’s the best way to communicate an image’s color information.

1 Like

So the moral of the story (or one of several I guess) is, don’t depend exclusively on tags for image information. Thanks for the explanations.

After reading a bit more about this, I think it makes sense to set the tag when not embedding an ICC profile (i.e. when selecting “No ICM: sRGB output” as output profile), so I’ve just done that. Thanks!


Curious, I just went to read up on the Colorspace tag at exiftool. sRGB is straightforward. AdobeRGB is not, also involves the InteropIndex tag. Also, embedding an ICC profile also has a value.

With metadata, it’s never easy, it seems… :crazy_face:


That’s the great thing about “standards”… there are so many to choose from! :slight_smile:

1 Like

Yup, although that one has a statement of “The values 0xfffd and 0xfffe are also non-standard, and are used by some Sony cameras” - at least none of the Sonys I own appear to do that. I’d LOVE it if they attached an ICC profile that corresponded to their picture profile setting!

In general, what I have seen is that embedding an ICC profile itself without setting the ColorSpace tag works in every software I’ve ever used that was color-managed, with a few weird corner cases.

For example, Hugin appears to ignore the embedded ICC profile transfer function and assume linear data if you feed it floating point inputs, but handles ICC profiles on input fine if it’s integer input.

1 Like