freeimage.h

FreeImage_ConvertToRawBits

1 4 8 16 24 32

DLL_API void DLL_CALLCONV FreeImage_ConvertToRawBits(BYTE *bits, FIBITMAP *dib, int
pitch, unsigned bpp, unsigned red_mask, unsigned green_mask, unsigned blue_mask, BOOL
topdown FI_DEFAULT(FALSE));

Convierte un FIBITMAP a un trozo crudo en memoria. El diseño de la memoria se describe en los parámetros pasados, que son similares los de la función FreeImage_ConvertFromRawBits. El último parámetro, topdown, indica si el mapa de bits se almacenará con el pixel superior izquierdo primero, si es TRUE o con el pixel inferior izquierdo primero, si es FALSE.

// this code assumes there is a bitmap loaded and
// present in a variable called ‘dib’
// convert a bitmap to a 32-bit raw buffer (top-left pixel first)
// --------------------------------------------------------------
FIBITMAP *src = FreeImage_ConvertTo32Bits(dib);
FreeImage_Unload(dib);
// Allocate a raw buffer
int width = FreeImage_GetWidth(src);
int height = FreeImage_GetHeight(src);
int scan_width = FreeImage_GetPitch(src);
BYTE *bits = (BYTE*)malloc(height * scan_width);
// convert the bitmap to raw bits (top-left pixel first)
FreeImage_ConvertToRawBits(bits, src, scan_width, 32,
    FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK, TRUE);
FreeImage_Unload(src);
// convert a 32-bit raw buffer (top-left pixel first) to a FIBITMAP
// ----------------------------------------------------------------
FIBITMAP *dst = FreeImage_ConvertFromRawBits(bits, width, height, scan_width,
    32, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK, FALSE);