[argyllcms] Re: icmColorantTableVal_write: write of PCS coord failed

  • From: Graeme Gill <graeme@xxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Tue, 09 Jun 2009 14:23:29 +1000

Gerhard Fuernkranz wrote:
    collink -v -qh -G -ir -cmt -dmt XL20_cal.icc sRGB.icm link-Xs.icm

gives me the error message

    collink: Error - Write file: 1, icmColorantTableVal_write: write of
    PCS coord failed

Any idea?

Hi Gerhard,
        yes I've seen this before, but evidently I've only half fixed
it. The problem is that there are real world colorants with color
values outside the ICC L*a*b* PCS range, so your source profile
is in XYZ PCS and in trying to create colorant tables in the link
in L*a*b* PCS, the XYZ can't be encoded. In this case it's the green
primary that is out of encoding range.

The fix is to add a call:

        icmClipLab(wo->data[j].pcsCoords, wo->data[j].pcsCoords);

after the icmXYZ2Lab() at line 2395 in link/collink.c, to match
the "Do this the hard way" case that follows.

Of course the implication is that you can't create an accurate
LUT based L*a*b* PCS profile for the XL20 either. A quick check
indicates that I'm not generating any warnings for this case thought,
so I'll have to add some.

cheers,
        Graeme Gill.

Other related posts: