Color shifts using QUANTIZE_COLORS=256
Stephen Woodbridge
woodbri at SWOODBRIDGE.COM
Wed Aug 9 10:56:53 PDT 2006
Hi all,
Sorry for the cross-post, but this seems valid for both groups.
I have mapserver configured to work with ka-map and things are working
fine except we have noticed color shifts in tiles. We are using:
OUTPUTFORMAT
NAME PNG8
DRIVER "GD/PNG"
EXTENSION "png"
MIMETYPE "image/png"
IMAGEMODE RGBA
TRANSPARENT OFF
FORMATOPTION "QUANTIZE_FORCE=ON"
FORMATOPTION "QUANTIZE_DITHER=OFF"
FORMATOPTION "QUANTIZE_COLORS=256"
END
in our mapfile and my hypotheses is that the GD QUANTIZE process is
selecting different colors based on the colors available in the various
meta-tiles. The mapserver source code calls the following function for
this process and from the GD manual:
> void gdImageTrueColorToPalette(gdImagePtr im, int ditherFlag, int
> colorsWanted) gdImagePtr gdImageCreatePaletteFromTrueColor(gdImagePtr
> im, int ditherFlag, int colorsWanted) (FUNCTION)
>
> gdImageCreatePaletteFromTrueColor returns a new image.
> gdImageTrueColorToPalette permanently converts the existing image.
> The two functions are otherwise identical.
>
> The function converts a truecolor image to a palette-based image,
> using a high-quality two-pass quantization routine. If ditherFlag is
> set, the image will be dithered to approximate colors better, at the
> expense of some obvious "speckling." colorsWanted can be anything up
> to 256. If the original source image includes photographic
> information or anything that came out of a JPEG, 256 is strongly
> recommended. 100% transparency of a single transparent color in the
> original truecolor image will be preserved. There is no other support
> for preservation of alpha channel or transparency in the destination
> image.
>
> For best results, don't use this function -- write real truecolor
> PNGs and JPEGs. The disk space gain of conversion to palette is not
> great (for small images it can be negative) and the quality loss is
> ugly. However, the version of this function included in version
> 2.0.12 and later does do a better job than the version included prior
> to 2.0.12.
So, a few questions:
1) Has anyone looked into the impact of using PNG24 images on
a) image sizes
b) ka-map tile-cache sizing
c) compatibility with browsers
d) impact on browser memory usage or performance
2) I thought Paul Spencer said to use DITHERED=OFF, is this correct
3) Has anyone looked at the GD routine? Would it be possible to add a
palette of say 32 colors that would be "sticky" and priority over other
colors?
-SteveW
More information about the MapServer-users
mailing list