[OpenJDK 2D-Dev] Missing colour profiles

Andrew Haley aph at redhat.com
Wed Apr 9 17:25:29 UTC 2008

Dmitri Trembovetski wrote:
>   HI Andrew,
>   thanks for keeping us in the loop.

I've now got working PYCC and LINEAR_RGB profiles.

The LINEAR_RGB profile was easy: it's identical to sRGB except for
a Gamma 1.0 curve instead of Gamma 2.2.

PYCC was much harder: it's a rather weird colour space and hard to
generate an accurate profile for.  However, I've made one now, and it's
certainly accurate, based on public data available from Kodak and
other sources, in particular R.W.G. Hunt's _The Reproduction of Colour_.
It's rather large, however: 229K bytes.  I've also made a smaller one
that is less accurate in the reverse direction (PYCC -> XYZ), but is
only 61 Kbytes.  Perhaps I could submit both of them?

I also investigated the loss of precision in the lcms library.  This
problem isn't as bad as I first thought, but it is real.  lcms seems
to read a profile, munge together all the curves and lookup
tables and then when doing the conversion it interpolates using integer
arithmetic.  I suppose this is intended to be fast on small devices, but
it's not ideal for the desktop and server-class boxes Java SE is often
run on, which have fast floating point and vector units.

One final thought: we could implement some of these standard colour spaces
by subclassing ColorSpace directly without the use of any underlying
colour profile.  This would be more accurate than lcms in many cases, and
might even be faster in some.

So, where should I send these profiles?


> Andrew Haley wrote:
>> Andrew Haley wrote:
>>> Just a heads-up: I'm working on Bug 6523403, Need to provide lcms
>>> library with PYCC and LINEAR_RGB OS ICC profiles.  I'm also looking
>>> at the causes of Bug 6523402, Some quality problems with GRAY, PYCC
>>> and CIEXYZ color spaces with lcms library
>>> I have created a LINEAR_RGB profile using the same primaries as the
>>> lcms sRGB profile, and I have verified that it's compatible with
>>> the Kodak-provided one in the proprietary JDK.  The PYCC profile
>>> will take a little longer, and I've started working on that.
>> Just a bit more information on my progress.  I've created a PYCC profile
>> based on specs from Kodak, but I'm being hampered by some bugs in lcms,
>> which at the present time can't even get the sRGB primaries exactly
>> right.
>> I note that this is already a known bug in OpenJDK, # 6523402.  I'm
>> investigating.
>> Andrew.

More information about the 2d-dev mailing list