使用FreeImage保存彩圖,灰度圖

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章