Freeimage.h

FreeImage_Allocate

1 4 8 16 24 32

Si quieres crear un nuevo mapa de bits en memoria desde cero, sin cargar un mapa previamente desde disco, se debe usar esta función. FreeImage_Allocate toma una anchura, altura y profundidad de bits como parámetros, y retorna un FIBITMAP.

Los tres últimos parámetros opcionales (red_mask, green_mask y blue_mask) se usan para indicar a FreeImage la estructura de los componentes de color del mapa de bits, es decir, dónde se almacenan los componentes de color rojo, verde y azul en cada pixel. Para dar una idea sobre cómo interpretar las máscaras de color: cuando red_mask es 0xFF000000 significa que los ocho últimos bits en un pixel se usan para el color rojo. Cuando green_mask es 0x000000FF, significa que los primeros ocho bits de un pixel se usan para el color verde.

Sintaxis

DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Allocate(int width, int height, int bpp,
unsigned red_mask FI_DEFAULT(0), unsigned green_mask FI_DEFAULT(0), unsigned blue_mask
FI_DEFAULT(0));

Parámetros

width: anchura del mapa de bits.

height: altura del mapa de bits.

bpp: bits de profundidad (bits por pixel).

red_mask: opcional, indica la máscara de bits que se usan para el color rojo.

green_mask: opcional, indica la máscara de bits que se usan para el color verde.

blue_mask: opcional, indica la máscara de bits que se usan para el color azul.

Valor de retorno

Esta función retorna un FIBITMAP.

Observaciones

FreeImage_Allocate crea un mapa de bits vacío, es decir, un mapa de bits que está completamente lleno con ceros. Un cero en un mapa de bits generalmente se interpreta como negro. Esto significa que si el mapa de bits contiene una paleta, en esa paleta todos los colores son negro. Se puede acceder, y en consecuencia, completar la paleta usando la función FreeImage_GetPalette. Únicamente en el caso de imágenes de 8-bit, FreeImage_Allocate construye una paleta de escala de grises por defecto.

FIBITMAP *bitmap = FreeImage_Allocate(320, 240, 32);
if (bitmap) {
 // bitmap successfully created!
 FreeImage_Unload(bitmap);
}

FreeImage_Allocate es un alias para FreeImage_AllocateT y puede ser sustituida por esta llamada:

FreeImage_AllocateT(FIT_BITMAP, width, height, bpp, red_mask, green_mask, blue_mask);