首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

大家有没有比较快速加载一副图像并获取其图像数据的方法?该怎么处理

2012-01-15 
大家有没有比较快速加载一副图像并获取其图像数据的方法?我用CBitmap类加载图像,CBitmapbitmapbitmap.Loa

大家有没有比较快速加载一副图像并获取其图像数据的方法?
我用CBitmap类加载图像,
CBitmap   bitmap;
bitmap.LoadBitmap( "c:\\test.bmp ");
BYTE*   pData   =   new   BYTE[dwCount];
bitmap.GetBitmapBits(dwCount,pData);
从而得到数据的指针,
大家还有更快的方法吗

[解决办法]
HANDLE hFile=CreateFile( "test.bmp ",GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING,
FILE_ATTRUBUTE_NORMAL, NULL);

BITMAPFILEHEADER bh;
DWORD dwFileSize;
DWORD dwRead;
LPBYTE pBuffer;

if(INVALID_HANDLE_VALUE!=hFile)
{
dwFileSize=GetFileSize(hFile);
ReadFile(hFile, &bh, sizeof(bh), &dwRead, NULL);
dwFileSize-=dwRead+bh.bfOffBits;

pBuffer=(LPBYTE)LocalAlloc(LMEM_FIXED, dwFileSize);
ReadFile(hFile, pBuffer, dwFileSize, &dwRead, NULL);
CloseHandle(hFile);
}
[解决办法]
代码多少和快慢没有直接关系;如果只是读取数据,用MapFile应该是最快的。
[解决办法]
CBitmap bmp;
CDC memDC;
bmp.LoadBitmap(IDB_BITMAP1);
memDC.CreateCompatibleDC(NULL);
CBitmap* pOldBitmap = memDC.SelectObject(&bmp);

// 得到图片像素的RGB值
COLORREF ref = memDC.GetPixel(10, 10);
[解决办法]
chehw(chehw)已经写的很清楚了,建议先看看bmp文件格式就明白了。
不过如果只是读取图像数据,使用内存映射文件可能会更快些

热点排行