FreeImage_Load
Esta función decodifica un mapa de bits, obtiene memoria para él y lo devuelve como un FIBITMAP. El primer parámetro define el tipo de mapa de bits a cargar. Por ejemplo, cuando es FIF_BMP, se carga un fichero BMP en memoria (un listado de posibles valores para las constantes FREE_IMAGE_FORMAT está disponible en la tabla 1). El segundo parámetro indica a FreeImage el fichero a decodificar. El último parámetro se usa para cambiar el comportamiento o activar una función sobre el mapa de bits en el plugin. Cada plugin tiene su propio conjunto de parámetros.
FIBITMAP *bitmap = FreeImage_Load(FIF_BMP, “mybitmap.bmp”, BMP_DEFAULT); if (bitmap) { // bitmap successfully loaded! FreeImage_Unload(bitmap); }
Algunos cargadores de mapas de bits pueden recibir parámetros para modificar el comportamiento de la carga. Cuando el parámetro no está disponible o no se usa se puede pasar el valor 0 ó <TYPE_OF_BITMAP>_DEFAULT (por ejemplo, BMP_DEFAULT, ICO_DEFAULT, etc).
Sintaxis
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Load(FREE_IMAGE_FORMAT fif, const char *filename, int flags FI_DEFAULT(0));
Parámetros
fif: Define el tipo de mapa de bits a cargar.
filename: Nombre del fichero a cargar.
flags: Flags opcionales.
Tipo de mapa de bits | Flag | Descripción |
---|---|---|
<cualquier tipo> | FIF_LOAD_NOPIXELS | Cuando éste flag está soportado por el plugin, sólo se cargan los datos de cabecera
y posibles metadatos (incluyendo la miniatura incrustada)1 Cuando el flag no está soportado, se cargan los pixels. |
FIF_GIF | GIF_DEFAULT | |
GIF_LOAD256 | Carga la imagen como una imagen de 256 colores con entradas de la paleta sin usar, si es de 16 ó 2 colores. | |
GIF_PLAYBACK | 'Reproduce' el GIF para generar cada cuadro (como) 32bpp) en lugar de retornar los datos de cuadros en bruto cuando se cargue. | |
FIF_ICO | ICO_MAKEALPHA | Convertir a 32-bit y crear un canal alfa a partir de la máscara AND al cargar. |
FIF_JPEG | JPEG_DEFAULT | Cargar el ficharo tan rápido como sea posible, sacrificando algo de calidad. |
JPEG_FAST | Cargar el ficharo tan rápido como sea posible, sacrificando algo de calidad. | |
JPEG_ACCURATE | Cargar el ficharo con la mejor calidad, sacrificando algo de velocidad. | |
JPEG_CMYK | Este flag cargará mapas de bits CMYK como 32-bit CMYK separados (usar | para combinar con otros flags de carga). | |
JPEG_GREYSCALE | Carga y convierte a imagen de 8 bits en escala de grises (más rápido que cargar como 24-bit y convertir a 8-bit). | |
Entero X tal que flags = flags | (X << 16) | Carga y redimensiona el fichero tal que tamaño/X = max(ancho, alto)/X retornará una imagen escalada por 2, 4 u 8 (es decir, el tamaño requerido más apropiado).2 | |
JPEG_EXIFROTATE | Carga y rota de acuerdo con la etiqueta Exif 'Orientation' si está disponible. | |
FIF_JXR | JXR_DEFAULT | |
FIF_PCD | PCD_DEFAULT | Una imagen PhotoCD viene en muchos tamaños. Este flag cargará el de tamaño 768 x 512 |
PCD_BASE | Este flag cargará el de tamaño 768 x 512 | |
PCD_BASEDIV4 | Este flag cargará el de tamaño 384 x 256 | |
PCD_BASEDIV16 | Este flag cargará el de tamaño 192 x 128 | |
FIF_PNG | PNG_IGNOREGAMMA | Evita la corrección gamma en la carga. |
FIF_PSD | PSD_DEFAULT | Carga y convierte a RGB[A]. |
PSD_CMYK | Lee etiquetas para CMYK separados (por defecto se convierte a RGB). | |
PSD_LAB | Lee etiquetas para CIELab (por defecto se convierte a RGB). | |
FIF_RAW | RAW_DEFAULT | Carga el fichero como RGB lineal de 48-bit. |
RAW_PREVIEW | Intenta cargar la vista previa JPEG incrustada incluyendo datps Exif o por defecto a RGB 24-bit. | |
RAW_DISPLAY | Carga el fichero como RGB 24-bit. | |
RAW_HALFSIZE | Da como salida una imagen en color de mitad de tamaño. | |
RAW_UNPROCESSED | Da como salida una imagen Bayer en bruo FIT_UINT16.3 | |
FIF_TARGA | TARGA_LOAD_RGB888 | Si está activo se convierte de RGB555 y ARGB8888 -> RGB888. |
FIF_TIFF | TIFF_CMYK | Este flag cargará mapas de bits CMYK como CMYK separados (por defecto es conversión a RGB). |
FIF_WEBP | WEBP_DEFAULT |
Tabla 3: Constantes de decodificación opcionales.
Valor de retorno
Esta función retorna un FIBITMAP.
Observaciones
En lugar de indicar un valor fijo en el código para FREE_IMAGE_FORMAT cuando se llame a FreeImage_Load, es preferible usar una de las funciones de tipo de fichero de FreeImage, como FreeImage_GetFileType para diseñar un código más genérico, independiente de posibles cambios futuros en el API.
1 Ver FreeImage_HasPixels para ver un ejemplo de uso.
2 Ver FreeImage_MakeThumbnail para ver un ejemplo de uso.
3 Ver el modelo de metatados FIMD_COMMENTS para más información.