[cairo] Reducing number of colors
chris at chris-wilson.co.uk
Tue Jul 2 05:33:02 PDT 2013
On Tue, Jul 02, 2013 at 02:04:11PM +0200, Bernhard R. Fischer wrote:
> On Tuesday 02 July 2013 13:27:00 Chris Wilson wrote:
> > On Tue, Jun 25, 2013 at 08:16:22AM +0200, Bernhard R. Fischer wrote:
> > > Hi!
> > >
> > > Image surfaces are supported as true color (24/32 bit) or 5/6/5 bit
> > > pixels.
> > >
> > > Is there any native way in cairo to reduce colors to fixed number palette
> > > image?
> > No, there is nothing inside cairo to perform the quantization you wish -
> > it is outside of Cairo's scope. I would suggest you hook the output of
> > your rendering into ImageMagick and use some of its routines to control
> > the quantization of the image to a fixed palette.
> > -Chris
> Hi Chris,
> I think that there is some code somwhere which could be used for that purpose
> because it is possible to copy a 24 bit surface to a 16 bit surface which
> obviously requires color reduction.
The code you mention is src/cairo-xlib-surface.c when pushing images to
X. If both are truecolor, we use pixman to do the conversion (or failing
that do the shifts ourselves). For other formats, we have a relatively
simple mapping from r8g8b8 to the Visual's palette. That is a much
simpler task than picking an optimal palette for an image.
Chris Wilson, Intel Open Source Technology Centre
More information about the cairo