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