Freeimage.h

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 bitsFlagDescripción
<cualquier tipo>FIF_LOAD_NOPIXELSCuando é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_GIFGIF_DEFAULT
GIF_LOAD256Carga 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_ICOICO_MAKEALPHAConvertir a 32-bit y crear un canal alfa a partir de la máscara AND al cargar.
FIF_JPEGJPEG_DEFAULTCargar el ficharo tan rápido como sea posible, sacrificando algo de calidad.
JPEG_FASTCargar el ficharo tan rápido como sea posible, sacrificando algo de calidad.
JPEG_ACCURATECargar el ficharo con la mejor calidad, sacrificando algo de velocidad.
JPEG_CMYKEste flag cargará mapas de bits CMYK como 32-bit CMYK separados (usar | para combinar con otros flags de carga).
JPEG_GREYSCALECarga 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_EXIFROTATECarga y rota de acuerdo con la etiqueta Exif 'Orientation' si está disponible.
FIF_JXRJXR_DEFAULT
FIF_PCDPCD_DEFAULTUna imagen PhotoCD viene en muchos tamaños. Este flag cargará el de tamaño 768 x 512
PCD_BASEEste flag cargará el de tamaño 768 x 512
PCD_BASEDIV4Este flag cargará el de tamaño 384 x 256
PCD_BASEDIV16Este flag cargará el de tamaño 192 x 128
FIF_PNGPNG_IGNOREGAMMAEvita la corrección gamma en la carga.
FIF_PSDPSD_DEFAULTCarga y convierte a RGB[A].
PSD_CMYKLee etiquetas para CMYK separados (por defecto se convierte a RGB).
PSD_LABLee etiquetas para CIELab (por defecto se convierte a RGB).
FIF_RAWRAW_DEFAULTCarga el fichero como RGB lineal de 48-bit.
RAW_PREVIEWIntenta cargar la vista previa JPEG incrustada incluyendo datps Exif o por defecto a RGB 24-bit.
RAW_DISPLAYCarga el fichero como RGB 24-bit.
RAW_HALFSIZEDa como salida una imagen en color de mitad de tamaño.
RAW_UNPROCESSEDDa como salida una imagen Bayer en bruo FIT_UINT16.3
FIF_TARGATARGA_LOAD_RGB888Si está activo se convierte de RGB555 y ARGB8888 -> RGB888.
FIF_TIFFTIFF_CMYKEste flag cargará mapas de bits CMYK como CMYK separados (por defecto es conversión a RGB).
FIF_WEBPWEBP_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.