Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
一直以来使用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())
当然也可以逐像素复制咯
posted on 2010-07-21 20:14 ccsdu2009 阅读(4375) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理