1.保存彩圖
FIBITMAP* bitmap =FreeImage_Allocate(width,height,24);
const unsigned char* source = data;
for(int y=0; y < height; y++ )
{
unsigned char* scanline = (unsigned char*)FreeImage_GetScanLine(bitmap, height - y - 1 );
memcpy(scanline,data,sizeof(source[0]) * width);
data += width;
}
FIBITMAP* bitmap = FreeImage_ConvertFromRawBits(data,width,height,pitch,24,FI_RGBA_BLUE_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_RED_MASK,FALSE);
2.保存灰度圖
/**
* 把緩衝區中的數據保存爲灰度圖像文件
*/
int store_image(uint8_t *buffer, const char *image_name)
{
int i, j, ret = 0;
// 創建新的位圖對象
FIBITMAP *bitmap = FreeImage_Allocate(g_width, g_height, 32);
if (bitmap == NULL) {
printf("alloc bitmap fail\n");
return EXIT_FAILURE;
}
uint8_t *bits = FreeImage_GetBits(bitmap);
for (i = 0; i < g_width * g_height; i++) {
for (j = 0; j < 3; j++)
{
bits[i*4+j] = buffer[i];
}
bits[i*4+3]=255;
}
FreeImage_Save(g_format, bitmap, image_name);
FreeImage_Unload(bitmap);
return ret;
}