Stephen Woodbridge wrote: > > Thanks for the pointer to the bug. I will add some comments to it even > though it is closed. > > Bart van den Eijnden (OSGIS) wrote: >> there is some info by Frank in the following bug report (assuming it is >> not outdated): >> >> http://mapserver.gis.umn.edu/bugs/show_bug.cgi?id=684 >
I think this may be just a rehashing of this same issue, which I think is further covered in the following (the URL has moved): http://trac.osgeo.org/mapserver/ticket/684 Trouble tricking Mapserver colors in 8-bit mode Ticket #684 (closed defect: wontfix) Although since that was opened 4 years ago, last modified more than 1 year ago, and this thread is from the time (>1 year ago) of that last modification, I want to make sure that this is valid and I'm understanding things properly. I've narrowed this down to a very simple test case (see below). ALL that I'm attempting to displaying here is an 80% grey background. This works fine with both the AGG and GD rendering backends, as long as quantization is not enabled. However, if I enable quantization, instead of getting a uniform background of (204,204,204), I get (204,206,204). And I'm quite surprised at how visually noticeable such a small green shift is. I can preserve the proper color if I use IMAGEMODE PC256 rather than IMAGEMODE RGB, but that is only valid with GD. If I try to use it with AGG, I get the following error message: --- msDrawMap(): Image handling error. Unable to initialize image. msPrepareImage(): GD library error. Unable to initialize image. msImageCreateAGG(): AGG library error. AGG driver only supports RGB or RGBA pixel models. --- I have a very strong preference for using AGG instead of GD. And I would prefer to make my PNG's smaller by not using full 24bit color. I realize a plain background is a bit of an extreme case, but in this case the size difference is dramatic: -rw-r--r-- 1 rich engr 2809 2007-11-30 11:14 agg.png -rw-r--r-- 1 rich engr 133 2007-11-30 11:15 agg_q.png -rw-r--r-- 1 rich engr 2809 2007-11-30 11:14 gd.png -rw-r--r-- 1 rich engr 133 2007-11-30 11:37 gd_q.png -rw-r--r-- 1 rich engr 133 2007-11-30 11:47 gd_256.png And here are the color distributions within the images: agg.png -------- 0: (204,204,204) grey80 agg_q.png -------- 0: (204,206,204) #CCCECC gd.png -------- 0: (204,204,204) grey80 gd_q.png -------- 0: (204,206,204) #CCCECC gd_256.png -------- 0: (204,204,204) grey80 I realize that sometimes quantization will by its very nature need to change colors, but I had not expected this if the input image already had a sufficiently small number of colors. Is this indeed still recognized as a known issue that is not going to be fixed? One of the replies here suggested the possibility of reserving colors via a PALETTE option, but I can find no mention of this anywhere in the docs. I suppose another option would be to have mapserver output 24bit color PNG images and use some external program (like ImageMagick) to convert to 8bit PNG. I am running mapserver-5.0.0, compiled with gd-2.0.35 and agg-2.5. Complete map files to reproduce my testcases are included below. - Rich Fromm --- begin agg.map --- MAP NAME agg IMAGETYPE AGG OUTPUTFORMAT NAME 'AGG' DRIVER AGG/PNG IMAGEMODE RGB END EXTENT -122.293878 37.838295 -122.288122 37.841705 SIZE 640 480 IMAGECOLOR 204 204 204 # background END --- end agg.map --- --- begin agg_q.map --- MAP NAME agg_q IMAGETYPE AGG_Q OUTPUTFORMAT NAME 'AGG_Q' DRIVER AGG/PNG IMAGEMODE RGB FORMATOPTION "QUANTIZE_FORCE=ON" FORMATOPTION "QUANTIZE_DITHER=OFF" FORMATOPTION "QUANTIZE_COLORS=256" END EXTENT -122.293878 37.838295 -122.288122 37.841705 SIZE 640 480 IMAGECOLOR 204 204 204 # background END --- end agg_q.map --- --- begin gd.map --- MAP NAME gd IMAGETYPE PNG OUTPUTFORMAT NAME 'PNG' DRIVER GD/PNG IMAGEMODE RGB END EXTENT -122.293878 37.838295 -122.288122 37.841705 SIZE 640 480 IMAGECOLOR 204 204 204 # background END --- end gd.map --- --- begin gd_q.map --- MAP NAME gd IMAGETYPE PNG_Q OUTPUTFORMAT NAME 'PNG_Q' DRIVER GD/PNG IMAGEMODE RGB FORMATOPTION "QUANTIZE_FORCE=ON" FORMATOPTION "QUANTIZE_DITHER=OFF" FORMATOPTION "QUANTIZE_COLORS=256" END EXTENT -122.293878 37.838295 -122.288122 37.841705 SIZE 640 480 IMAGECOLOR 204 204 204 # background END --- end gd_q.map --- --- begin gd_256.map --- MAP NAME gd_256 IMAGETYPE PNG_256 OUTPUTFORMAT NAME 'PNG_256' DRIVER GD/PNG IMAGEMODE PC256 END EXTENT -122.293878 37.838295 -122.288122 37.841705 SIZE 640 480 IMAGECOLOR 204 204 204 # background END --- end gd_256.map --- -- View this message in context: http://www.nabble.com/Color-shifts-using-QUANTIZE_COLORS%3D256-tf2080351.html#a14092078 Sent from the Mapserver - User mailing list archive at Nabble.com.