On Mon, 2010-03-08 at 05:53 +0000, Omari Stephens wrote:

> So, you're right; I had dismissed this possibility out-of-hand without 
> investigating sufficiently.  Having poked around the lcms code a bit, I 
> don't think this option is feasible.
> Basically, lcms generates an RGB profile with the sRGB primaries, 
> transfer functions (aka "gamma curve"), and whitepoint; for the curious, 
> this happens in cmsCreate_sRGBProfile() in cmsvirt.c .  For one, I'm not 
> sure if this is all there is to a "real" sRGB profile (although it 
> certainly might be; thoughts, Graeme?).

It is a "real" sRGB profile. If you look at the color management code in
GIMP, you will notice that we use this built-in sRGB profile and that we
even do an MD5 hash comparison against it to find out whether an
attached profile is an sRGB profile. This is done to avoid a needless
conversion from one sRGB profile to another identical sRGB profile.

> Secondly, even if that's all there is to it, there doesn't seem to be a 
> way to get a profile _out_ of lcms.  The prototypes for profile 
> input/output are limited to cmsOpenProfileFromFile(), 
> cmsOpenProfileFromMem(), and cmsCloseProfile().  Nothing about exporting 
> a profile in any way.

Since the in-memory representation you get from cmsCreate_sRGBProfile()
has the same MD5 sum as an sRGB profile opened from disk, it appears
that it should be sufficient to use g_file_set_contents() to write it to
disk (if that is needed at all). Or to use gimp_parasite_new() to create
a parasite from it (which is more likely what you will want to do).


Gimp-developer mailing list

Reply via email to