forced palette for RGBA images

thomas bonfort thomas.bonfort at GMAIL.COM
Wed Dec 12 13:32:06 EST 2007


Paul,

short answer:
it works on rgba images. the gd one does not, as can be seen on the
last attached link

long answer:
I think you're confusing the palette method and the quantize method
(actually the palette method calls gd quantization to if the supplied
palette contains less than 256 colors). I agree that it should'nt be
enabled by default for non-rgba images as it is much slower. It does
produce vastly superior results than  gd if requesting an image with
very little colors (quantize_colors=64 or less , roughly), as in that
case the gd algorithm tends to be very buggy (its created palette
contains nearly only whites).

cheers,
thomas

On Dec 12, 2007 6:50 PM, Paul Spencer <pspencer at dmsolutions.ca> wrote:
> Thomas, Assefa,
>
> how is this approach different from the quantization that Steve/Assefa
> implemented?
>
> I believe we are currently using the gd-based quantization with a
> limited palette of primary colours that we want to preserve and a
> number of open colour slots that are filled by gd for covering the
> antialiasing values, and that it works quite well to reduce image size
> to better level without causing horrendous loss of image quality.
>
> Does this new algorithm work the same way?  Why would it be used over
> the gd method?  It seems to be substantially slower than the gd
> quantization.  One use case for quantization that we have is in
> generating map tiles for a large, static cache.  This additional
> overhead would be pretty substantial for this use case.
>
> Cheers
>
> Paul
>
>
> On 12-Dec-07, at 12:02 PM, Daniel Morissette wrote:
>
> > Could we please have a ticket for this referred from the SVN change
> > comment, summarizing the info from this thread, just so that we have
> > a place to point users to when they ask about this change in a few
> > months?
> >
> > Personally I'd like to see tickets for anything that's not a trivial
> > bugfix... but that's just me of course.
> >
> > Daniel
> >
> >
> > Steve Lime wrote:
> >> Thomas, these are great additions. I'm looking forward to using
> >> them myself as I'm dealing
> >> with image size issues with AGG/OpenLayers. On your questions, if
> >> you think it might be disruptive then perhaps users should opt in
> >> (e.g.
> >> --enable-experimental-png).
> >> I'd go ahead and commit. No sense waiting and that gives more folks
> >> a chance to test.
> >> Steve
> >>>>> On 12/12/2007 at 2:46 AM, in message
> >> <d2b988930712120046n1c0dce28ye568b9c693040f0d at mail.gmail.com>,
> >> thomas bonfort
> >> <thomas.bonfort at GMAIL.COM> wrote:
> >>> A quick update on this.
> >>> I've now also added quantization for rgba images ( based on the
> >>> median
> >>> cut implementation of pngquant / ppmquant:
> >>> http://www.libpng.org/pub/png/apps/pngquant.html ).
> >>>
> >>> examples here (the first two images are actually transparent. you'd
> >>> have to open them in an image editor to see that):
> >>>
> >>> the full rgba png:
> >>> http://www.terriscope.fr/ms_tmp/rgba.png : 129k
> >>>
> >>> the quantized rgba png (may look funny under oldish MS IEs)
> >>> http://www.terriscope.fr/ms_tmp/palette.png : 39k
> >>>
> >>> the output produced with the current gd quantization
> >>> http://www.terriscope.fr/ms_tmp/rgbapalettegd.png
> >>> I'd personally enable the pngquant quantization for rgb images
> >>> to , as
> >>> it produces higher quality results, but there's a tradeoff on
> >>> rendering speed (rough times for quantization only: 1.5 sec for
> >>> pngquant vs 0.3 sec for gd, on a 2000x2000 image). Or this could be
> >>> yet another formatoption selectable option.
> >>>
> >>> Dan: all this will be documented. We've talked with Assefa about
> >>> either writing a complete reference on the different formatoptions,
> >>> and/or a howto on reducing image size with agg (palette,
> >>> quantization,
> >>> and tradeoffs beween speed/imagesize/flexibility)
> >>>
> >>> Now for the questions:
> >>> * how should I add this? I'd go for a configure option
> >>> (--disable-experimental-png) with ifdef'd code as I don't know how
> >>> disruptive this would be on all platforms.
> >>> * can I add this soon? It's stable on my setup, but there might be
> >>> issues on other platforms. I'd like to have it tested as much as
> >>> possible before 5.2
> >>>
> >>> cheers,
> >>> thomas
> >>>
> >>> On Dec 7, 2007 10:46 PM, Daniel Morissette
> >>> <dmorissette at mapgears.com> wrote:
> >>>> Sounds like a cool feature. We'd need to make sure it is well
> >>>> documented
> >>>> and not just hidden in the source. A short RFC or ticket for this
> >>>> maybe?
> >>>>
> >>>> Daniel
> >>>>
> >>>>
> >>>>
> >>>> thomas bonfort wrote:
> >>>>> hello list,
> >>>>>
> >>>>> I've added the possiblity to force a color palette for RGBA
> >>>>> images. As
> >>>>> gd does not support this kind of images, I had to resort to
> >>>>> directly
> >>>>> use libpng functions for the actual saving of the file.
> >>>>>
> >>>>> The steps needed to actually use this would be:
> >>>>> - create a 24 bit rgba image representative of a typical image
> >>>>> that
> >>>>> would be produced
> >>>>> - use an external program to create an rgba paletted version of
> >>>>> the
> >>>>> image (pngquant, pngnq, photoshop...)
> >>>>> - extract the palette from the created image and save the values
> >>>>> in
> >>>>> the form r,g,b,a in a text file (one per line)
> >>>>> - use palette_force and palette formatoptions in the
> >>>>> outputformat block.
> >>>>>
> >>>>> This is rather complicated, but usefull on production setups to
> >>>>> minimize image size when using clients that overlay layers (eg
> >>>>> openlayers).
> >>>>>
> >>>>> There are still a few quirks I'd have to work on before the code
> >>>>> is
> >>>>> robust enough for inclusion in the trunk, so I'd like to know if
> >>>>> this
> >>>>> is a feature we'd definitely like to have before putting too much
> >>>>> effort into that.
> >>>>>
> >>>>> cheers,
> >>>>> thomas
> >>>>
> >>>> --
> >>>> Daniel Morissette
> >>>> http://www.mapgears.com/
> >
> >
> > --
> > Daniel Morissette
> > http://www.mapgears.com/
>
> +-----------------------------------------------------------------+
> |Paul Spencer                          pspencer at dmsolutions.ca    |
> +-----------------------------------------------------------------+
> |Chief Technology Officer                                         |
> |DM Solutions Group Inc                http://www.dmsolutions.ca/ |
> +-----------------------------------------------------------------+
>



More information about the mapserver-dev mailing list