Re: [GD-DEVEL] Color bug in JPEG output with 2.0.36
[email protected] ("Pierre Joye") Sun, 30 Mar 2008 20:48:33 +0200
| Newsgroups | php.gd.devel |
|---|---|
| Message-ID | <[email protected]> |
hi Ethan, On Sun, Mar 30, 2008 at 7:50 PM, Ethan A Merritt <[email protected]> wrote: > On Sunday 30 March 2008 08:50, Pierre Joye wrote: > > On Sun, Mar 30, 2008 at 11:48 AM, Pierre Joye <[email protected]> wrote: > > > Hi Ethan! > > > > > > I figured out the source of the "brown" red and posted the explanation in: > > > > http://sourceforge.net/tracker/index.php?func=detail&aid=1929002&group_id=2055&atid=102055 > > Right. However there is still a bit of a mystery. > The following set of commands demonstrates that the quality setting of the > jpeg compression is critical: > > echo "set term png; test" | gnuplot > test.png > convert -quality 88 test.png test88.jpeg > convert -quality 90 test.png test90.jpeg > > The first conversion shows the red->muddy brown artifact. > The second does not. > > However, the gnuplot gd.trm already sets the jpeg quality setting to 90, > yet the color artifact still occurs. Is there a difference between what > ImageMagick thinks is "quality 90" and what libgd thinks? As I was supposing, the quality can be improved (by supresing the ant ialiasing created by the downsampling sampling) using a custom sampling or no sampling at all. The attached image don't use any (4:4:4) and looks nearly like a lossless compressed image. A simple patch to test this feature is available here: http://bugs.libgd.org/?do=details&task_id=156 (take the 2nd patch). I think that iss the source of the mystery. About imagemagick's convert, it uses no sampling when the quality is larger or equal to 90 (max. is 100): if (image->quality >= 90) for (i=0; i < MAX_COMPONENTS; i++) { jpeg_info.comp_info[i].h_samp_factor=1; jpeg_info.comp_info[i].v_samp_factor=1; } Where MAX_COMPONENTS is three in this case. I hope it helps to provide better answers to your users (it helps me at least :) Cheers, -- Pierre http://blog.thepimp.net | http://www.libgd.org