2001.10.05 22:22 "16-bit ICC L*a*b* ?", by Dwight Kelly

2001.10.26 12:46 "Re: 16-bit ICC L*a*b* ?", by Joris Van Damme

Substract *256* from the a,b parts if bit 8 is set, otherwise leave them alone. This give us an encodeable range of -128.0 to +127.0 If you use 255, there would be two values for 0, 0 itself and 255.

OK, much appreciated!

I don't forget to avoid ';' before end! (pascal fellows does hate this) *:^)

Do we? I wasn't aware. :-) Besides, I'm happy to get help on this, it's worth a lot of ';' to me. (Thanks!)

procedure XPVtifflab48iToVlabf(const al,aa,ab: Integer; var bl,ba,bb: Cft);
begin
  bl:=al/256/2.55;

  if aa < $8000 then
    ba:=aa/256
  else
    ba:=aa/256-256;

  if ab< $8000 then
    bb:=ab/256
  else
    bb:=ab/256-256

end;

I still don't get that right. If I do it like this, my single testimage goes totally psychedelic blue and red. For this particular image the above is clearly not correct. The version I had before...

procedure XPVtifflab48iToVlabf(const al,aa,ab: Integer; var bl,ba,bb: Cft);
begin
  bl:=al/256/2.55;
  ba:=aa/256-128;
  bb:=ab/256-128;
end;

...seems to work, and is very different. Is it possible that there are multiple incarnations of this 16bit/channel lab around? Am I allowed to send you this testimage? (It's big though, it's around 30 meg.)

Kind regards,

Joris