FreeImage_Composite
8 32
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Composite(FIBITMAP *fg, BOOL useFileBkg FI_DEFAULT(FALSE), RGBQUAD *appBkColor FI_DEFAULT(NULL), FIBITMAP *bg FI_DEFAULT(NULL));
Esta función compone una imagen de primer plano transparente contra un fondo de un único color o contra una imagen de fondo. A la entrada, fg define la imagen de primer plano y la máscara de transparencia (implícitamente incluida en la imagen de primer plano como una tabla de transparencia para dibs 8-bit o como un canal alfa para dibs de 32-bit.
La fórmula para calcular una muestra compuesta es:
output = α * foreground + (1-α) * background
donde α y los valores de las muestras de entrada y salida son expresadas como fracciones en el rango de 0 a 1. Para imágenes en color, los cálculos se realizan separadamente para las muestras R, G y B.
El pseudocódigo siguiente ilustra el uso interno del resto de los parámetros:
if(useFileBkg && FreeImage_HasBackgroundColor(fg)) { // Use the file background as the single background color } else { // no file background color … // use application background color ? if(appBkColor) { // use the application background as the single background color } // no application background color … // use a background image ? else if(bg) { // use bg as the background image // bg MUST BE a 24-bit image with the same width and height as fg } else { // default case // use a checkerboard as the background image } }
Referencias
Portable Network Graphics (PNG) Specification (Second Edition).
[Online] http://www.w3.org/TR/PNG/