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:
FIT | Descripción |
---|---|
FIT_UNKNOWN | Formato desconocido (sólo como valor de retorno, nunca usar como valor de entrada) |
FIT_BITMAP | Imagen estándar: 1-, 4-, 8-, 16-, 24-, 32-bit |
FIT_UINT16 | Array de unsigned short: unsigned 16-bit |
FIT_INT16 | Array de short: signed 16-bit |
FIT_UINT32 | Array de unsigned long: unsigned 32-bit |
FIT_INT32 | Array de long: signed 32-bit |
FIT_FLOAT | Array de float: 32-bit IEEE floating point |
FIT_DOUBLE | Array de double: 64-bit IEEE floating point |
FIT_COMPLEX | Array de FICOMPLEX: 2 x 64-bit IEEE floating point |
FIT_RGB16 | Imagen RGB de 48-bit: 3 x unsigned 16-bit |
FIT_RGBA16 | Imagen RGBA de 64-bit: 4 x unsigned 16-bit |
FIT_RGBF | Imagen RGB float de 96-bit: 3 x 32-bit IEEE floating point |
FIT_RGBAF | Imagen 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); }