GNOME Bugzilla – Bug 72848
Incorrect RGBA resampling in Gaussian Blur (IIR) plug-in
Last modified: 2005-01-01 21:56:06 UTC
If two pixels have different opacity values (alpha channel), then their colors are not averaged correctly by the Gaussian Blur (IIR) plug-in. It looks like the RGB channels are resampled without taking the opacity into account. As a result, the (invisible) color of a transparent pixel can bleed into an opaque pixel. The resulting image is incorrect. See bug #70335 for some test images and a longer description of the problem. This problem affects many other tools and plug-ins.
Created attachment 14129 [details] [review] Proposed patch
Attached a patch against HEAD. It uses alpha premultiplication and separation functions already present in the code, but used in a pointless manner. They premultiply alpha in guchar domain, so color precission is considerably damaged in low-opacity areas. But at least it works. Beside that, it removes some completely bogus stuff, looking like ,,optimizations`` done by someone who read about optimization in Sunday Times...
2003-02-18 Sven Neumann <sven@gimp.org> Applied patches from David Necas <yeti@physics.muni.cz> that fix incorrect RGBA resampling in a number of plug-ins: * libgimpcolor/gimpbilinear.c (gimp_bilinear_rgba): fixes RGBA resampling in Map Object and Lighting Effects plug-ins (#72876 and #105496). * plug-ins/common/curve_bend.c: fixes bug #72863. * plug-ins/common/deinterlace.c: fixes bug #72856. * plug-ins/common/gauss_iir.c: fixes bug #72848. * plug-ins/common/gauss_rle.c: fixes bug #72849. * plug-ins/common/iwarp.c: fixes bug #72865 (except preview, see comment). * plug-ins/common/mblur.c: fixes bug #72850. * plug-ins/common/pixelize.c: fixes bug #72851. * plug-ins/common/polar.c: fixes bug #72866. * plug-ins/common/ripple.c: fixes bug #72868.