Feature Request: Premultiplied Alpha for 32-bit Windows BMP
Hi all,
I write to request a feature addition to the "Windows BMP image (*.BMP)"
exporter in GIMP.
The exporter currently (GIMP 2.8.2) allows the user to select from a
variety of sub-formats. One such sub-format is "A8 R8 G8 B8", which
stores an alpha channel in the unused/reserved byte of each pixel's
RGBQUAD structure.
This may be suitable and convienient when using BMP as an interchange
format. However, Windows application developers like myself need to
create 32-bit BMP images with premultiplied alpha. This is necessary
because the Windows GDI functions that perform alpha blending of bitmaps
expect the RGB channels to be premultiplied by the alpha value.
I therefore request the addition of a "premultiplied" variant of "A8 R8
G8 B8".
I believe this feature should be easy enough to add. The "Export Image
as BMP" dialog window can be expanded to include an additional radio
button called, say, "A8 R8 G8 B8 (Premultiplied)". When the user selects
this option, the pixels should be written using an algorithm along the
following lines:
----------------------------------------
if (premultiply)
{
// These calculations assume integers in the range 0..255
pixel.rgbBlue = blue * alpha / 255;
pixel.rgbGreen = green * alpha / 255;
pixel.rgbRed = red * alpha / 255;
pixel.rgbReserved = alpha;
}
else
{
pixel.rgbBlue = blue;
pixel.rgbGreen = green;
pixel.rgbRed = red;
pixel.rgbReserved = alpha;
}
----------------------------------------
Thanks in advance!
Matthew Turner