一直以來使用FreeImage保存圖像總是采用下面的辦法:
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;
}
FreeImage_Save(FIF_BMP,bitmap,file,0)
不過今天看到了函數:
FreeImage_ConvertFromRawBits
使用它可以更加快速的保存圖形
如下:
FIBITMAP* bitmap = FreeImage_ConvertFromRawBits(data,width,height,pitch,24,FI_RGBA_BLUE_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_RED_MASK,FALSE);
然后調用FreeImageSave即可
另外關于獲取FreeImage圖形到數組
也有2個辦法
一個是逐行復制
一個是使用memcpy(data,FreeImage.GetDibBits())
當然也可以逐像素復制咯