Freeimage.h

FreeImage_AllocateT

Si bien la mayoría de las aplicaciones sólo tratan con imágenes fotográficas, muchas aplicaciones científicas necesitan manejar imágenes de alta resolución (por ejemplo imágenes en escala de grises de 16 bits), con píxeles de valores reales o incluso valores complejos (piensa por ejemplo en el resultado de aplicar una transformada rápida de Fouriser a una imagen en escala de grises de 8 bits: el resultado es una imagen compleja).

Un parámetro especial, un enumerado llamado FREE_IMAGE_TYPE, se usa para especificar el tipo de mapa de bits para un FIBITMAP. Este enumerado está definidi en el fichero de cabecera freeimage.h. Actualmente están disponibles las siguientes constantes FREE_IMAGE_TYPE:

FITDescripción
FIT_UNKNOWNFormato desconocido (sólo como valor de retorno, nunca usar como valor de entrada)
FIT_BITMAPImagen estándar: 1-, 4-, 8-, 16-, 24-, 32-bit
FIT_UINT16Array de unsigned short: unsigned 16-bit
FIT_INT16Array de short: signed 16-bit
FIT_UINT32Array de unsigned long: unsigned 32-bit
FIT_INT32Array de long: signed 32-bit
FIT_FLOATArray de float: 32-bit IEEE floating point
FIT_DOUBLEArray de double: 64-bit IEEE floating point
FIT_COMPLEXArray de FICOMPLEX: 2 x 64-bit IEEE floating point
FIT_RGB16Imagen RGB de 48-bit: 3 x unsigned 16-bit
FIT_RGBA16Imagen RGBA de 64-bit: 4 x unsigned 16-bit
FIT_RGBFImagen RGB float de 96-bit: 3 x 32-bit IEEE floating point
FIT_RGBAFImagen RGBA float de 128-bit: 4 x 32-bit IEEE floating point

Tabla 2: constantes FREE_IMAGE_TYPE (Identificadores de tipos de datos FreeImage).

Cuando necesites conocer el tipo de datos de un mapa de bits, se puede usar la función FreeImage_GetImageType.

FIBITMAP *bitmap = FreeImage_AllocateT(FIT_RGB16, 512, 512);
if (bitmap) {
 // bitmap successfully created!
 FreeImage_Unload(bitmap);
}

Sintaxis

DLL_API FIBITMAP *DLL_CALLCONV FreeImage_AllocateT(FREE_IMAGE_TYPE type, int width,
int height, int bpp FI_DEFAULT(8), unsigned red_mask FI_DEFAULT(0), unsigned
green_mask FI_DEFAULT(0), unsigned blue_mask FI_DEFAULT(0));

Parámetros

type: tipo de datos del mapa de bits.

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);
}