天天看點

FreeImage加速儲存圖像

http://www.cppblog.com/gaimor/archive/2010/07/21/120984.html

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;

    }

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())

當然也可以逐像素複制咯