http://www.cppblog.com/gaimor/archive/2010/07/21/120984.html
FreeImage图形库函数一个
一直以来使用FreeImage保存图像总是采用下面的办法:
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;
}
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())
当然也可以逐像素复制咯