Using littlecms for professional colourmanagement.
Boudewijn Rempt
boud at valdyas.org
Thu Dec 16 13:15:41 CET 2004
In the past week or two I've been busy integrating lcms with Krita, mostly
with success, even though I'm still not even half-way there. This is a
summary of my findings. I've also subscribed to the lcms mailing list and
have had great help from lcms's Marti. Things look pretty good: I think
we can deliver more or less complete color management (except for some
external dependencies which I note later) with KOffice 1.4, and lcms makes
it even easy to add the beginning of 16-bit colour.
Some of this stuff is already done, other things I'm busy with, as always...
* Using littlecms for professional colourmanagement.
Profiles are applied to image data on import, paste, copy, display and
printing to calibrate for particular ways in which image data can
be presented or created. Profiles are associated with a certain
color space and with a device class.
* The following profiles are available in Krita:
Image profile The image profile is the default profile
for the default color space for the layers
in Krita
Layer profile Krita images can have layers of different
color spaces, so each layer can have a
different profile, too.
Display profile When converting the visible part of
an image for displaying on the users monitor,
a monitor calibration profile can be applied
to adjust for display idiosyncrasies.
Import profile On importing an image from disk that does
not have a profile embedded (XXX: embedded
profiles aren't recoginized yet), a screenshot
or a scan, the import profile is attached
to the image.
Output profile On printing, a profile can be applied to the
image to compensate for the printer
idiosyncrasies. XXX: Printing doesn't work
yet at all, and printing is big task that
should be part of KDE. We should simply
convert an image to a tiff file with embedded
profile, and send that to a system printer.
* At the following points we need to handle profiles:
File import Krita uses ImageMagick to import files.
ImageMagick knows about embedded profiles and
makes them available in memory. We need to
hack our IM builder to convert the in-memory
profile blob to a profile handle.
File export Krita uses ImageMagick to export files.
Here we need to do the reverse trick; take
a profile handle and get IM to save it with
the file.
Paste from clipboard Two cases: Krita has placed a clip on the
clipboard, or another application has placed
a clip on the clipboard. Clips are wrapped
in the KisClip class that can be created with
a profile. That can be the profile of the
image Krita copied the clip from, or the
copy profile set in the Settings, or none.
An external clip is always RGB8 (for now, no
doubt Qt will extend its clipboard once RGB16
images or RGB half images become widespread),
so in those cases we always need an RGB
profile.
Paste from external applications is handled by
the constructor from KisPaintDevice,
internally it might entail a mode conversion.
Copy to clipboard If another application consumes a clip Krita
has put on the clipboard it can receive the
data as-is, or with a profile applied.
Paste is handled by KisPaintDevice::convertToQImage.
Display on monitor For calibrated displays. This is handled
by KisPaintDevice::convertToQImage()
Image mode conversion A user can either choose to convert an
existing layer or image to another color
model/profile/bit depth or the conversion can
happen automatically, for instance when
painting when the color of a pixel is
converted from KoColor to the color in the
color model.
This is handled by
KisStrategyColorSpace:convertTo().
File loading Krita's own file format now has a field for
the product name of a profile. We need also to
be able to embed the entire profile into a
Krita file. That should be easy, since a Krita
file is just a zipfile.
File saving When loading a Krita file format image we
should also be able to load embedded profiles.
* Krita should have a few extra features that are easy to implement
once I a) know what they mean, technically and b) the foregoing is
completed. These are:
Softproofing Showing the image on the monitor with profiles
for printing applied, too.
Out-of-gamut warnign Colours that cannot be printed are shown in
some hideous colour.
Blackpoint compenstion No idea about this...
8-bit image dither No idea.
... lcms offers more stuff that I don't know
anything about but which might be interesting.
* External factors play a role. We need a free display calibration
tool for X11, a printing system that takes this stuff into account
and all the rest. That's not part of Krita, but it needs to be done
some time. XXX: Ask the KGamma developers about this?
--
Boudewijn Rempt | "Geef mij maar zuurtjes."
http://www.valdyas.org/fading/index.cgi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://mail.kde.org/pipermail/kimageshop/attachments/20041216/7a760f03/attachment.pgp
More information about the kimageshop
mailing list