[cairo] Reducing number of colors

Chris Wilson 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

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the cairo mailing list