[Gimp-developer] 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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]