一直以来使用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())
当然也可以逐像素复制咯