forced palette and quantization for RGBA images

thomas bonfort thomas.bonfort at GMAIL.COM
Mon Jan 7 14:06:31 EST 2008


no, the gif format itself doesn't support that. it only supports
setting *one* color as the transparent one, not setting multiple
colors with multiple alpha values as is the case with png (which is
the only common format to support* that, maybe along with tiff?)

Thomas

* support in the file format, not always in the display software
implementation (wink msie <7 ;)

On Jan 7, 2008 7:31 PM, Steve Lime <Steve.Lime at dnr.state.mn.us> wrote:
> Looking forward to trying. In theory couldn't this also be applied to GIFs (if GD wasn't having problems)?
>
> Steve
>
> >>> On 1/6/2008 at 3:52 AM, in message
> <d2b988930801060152k1f7abb5dg50dae7094434a49 at mail.gmail.com>, thomas bonfort
>
> <thomas.bonfort at GMAIL.COM> wrote:
> > hi all,
> >
> > I committed the implementation to enable forced palette and color
> > reduction via quantization for RGBA images. These options greatly
> > reduce image size for png output when using IMAGEMODE RGBA.
> >
> > the tracking ticket is http://trac.osgeo.org/mapserver/ticket/2436 ,
> > which contains examples of image size reduction you can hope to obtain
> > when using the option
> >
> > you'll need a recent version of the mapserver source tree from SVN (
> > instructions to obtain it:
> > http://mapserver.gis.umn.edu/development/cvs/ )
> >
> > it is activated when the ./configure script is run with the
> > --with-experimental-png switch, which checks for the libpng headers.
> > this means that the libpng headers have to be installed and accessible
> > on your system (apt-get install libpng-dev or the equivalent with
> > yum/yast/etc...)
> >
> > to activate these outputs in your mapfiles you'll need to set some
> > FORMATOPTION entries to the wanted OUTPUTFORMATs, eg
> >
> > ************************
> > to force quantization
> > ************************
> > (creates a paletted png, with the palette automatically
> > created/selected for each rendered image)
> >
> > OUTPUTFORMAT
> >     NAME 'AGGAQ'
> >     DRIVER AGG/PNG # not AGG specific, also works with GD. PNG is
> > mandatory though
> >     IMAGEMODE RGBA  # only for rgba imagemodes
> >     MIMETYPE "image/png"
> >
> > # this is the important part
> >     FORMATOPTION "QUANTIZE_FORCE=ON"
> >
> > # this specifies the number of colors wanted in the final image
> > # 256 is the typically wanted value
> > # values 17 to 255 are possible but don't really make sense as there's
> > little reduction in file size compared to 256 (each pixel is still
> > stored with 8 bits, only the palette is smaller)
> > # 16 greatly reduces image size (and quality, no magic)
> >     FORMATOPTION "QUANTIZE_COLORS=256"
> > END
> >
> >
> > **********************************************
> >  to use a specified precomputed palette
> > **********************************************
> > (faster than quantization, and guarantees colors are consistent
> > whatever the image created, but less flexible as the palette has to be
> > precomputed and is fixed whatever is in the image)
> >
> > OUTPUTFORMAT
> >     NAME 'AGGAP'
> >     DRIVER AGG/PNG
> >     IMAGEMODE RGBA
> >     MIMETYPE "image/png"
> >
> > # the important part
> >     FORMATOPTION "PALETTE_FORCE=TRUE"
> >     FORMATOPTION "PALETTE=/gro/jsigmaps/palette.txt"
> > END
> >
> > here the palette file must be specified with an absolute path, and
> > contains at most 256 lines, each consisting of an r,g,b,a quadruplet,
> > eg:
> >
> > 0,0,0,0
> > 127,127,127,2
> > 196,226,251,237
> > 170,170,170,2
> > 191,191,191,4
> > 196,225,251,233
> > ...
> > snip
> > ...
> > 163,189,242,57
> > 137,158,242,56
> > 118,137,241,48
> > 184,213,245,75
> >
> > to obtain this palette, take a typical (32bit rgba png) image you will
> > want to display, use your favorite image editor to reduce the number
> > of colors (photoshop using "save web image" and selecting png, or the
> > commandline utilities pngquant
> > [http://libpng.org/pub/png/apps/pngquant.html] or neuquant
> > [http://members.ozemail.com.au/~dekker/NEUQUANT.HTML], etc ) and then
> > extract (and transform to the required r,g,b,a format) the computed
> > palette to the palette file. ( pngcheck
> > [http://www.libpng.org/pub/png/apps/pngcheck.html] with its -p option
> > and some scripting can be used for this )
> >
> >
> >
> > these two options are still considered experimental, and any feedback
> > you might give is welcome ( be it in the ./configure script,
> > compiling, or image results )
> >
> > cheers,
> > thomas
> >
> > ps: email sent for documentation purposes until the official
> > documentation is created/released on the main documentation site
>
>



More information about the mapserver-dev mailing list