定义:
CFile file;
BYTE *pBmpData = NULL;
DWORD dwBmpDatalen = 0;
int nBmpBytePerline = 0;
BITMAPFILEHEADER bf;
BITMAPINFOHEADER bi;
RGBQUAD rgbColor[2];
//
//加载LEFT
if (!file.Open(strPathLeft,CFile::modeRead))
{
strMsg.Format(_T(" 打开 %s 文件失败!"),strPathLeft);
AfxMessageBox(strMsg);
return;
}
dwSrcFileLen = (DWORD)file.GetLength();
dwSrcDatalen = dwSrcFileLen-sizeof(BITMAPFILEHEADER)-sizeof(BITMAPINFOHEADER)-2sizeof(RGBQUAD);
file.Read(&bf,sizeof(BITMAPFILEHEADER));
file.Read(&bi,sizeof(BITMAPINFOHEADER));
file.Read(rgbColor,2sizeof(RGBQUAD));
pSrcData = new BYTE[dwSrcDatalen];
memset(pSrcData,0,dwSrcDatalen);
file.Read(pSrcData,dwSrcDatalen);
file.Close();
保存.
nBmpBytePerline = DIBSCANLINE_DWORDALIGN(nEclWidth);
dwBmpDatalen = nEclHeight*nBmpBytePerline;
bf.bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+2*sizeof(RGBQUAD);
bf.bfReserved1 = 0;
bf.bfReserved2 = 0;
bf.bfSize = sizeof(BITMAPFILEHEADER);
bf.bfType = 0x4d42;
bi.biBitCount = 1;
bi.biClrImportant = 0;
bi.biClrUsed = 0;
bi.biCompression = 0;
bi.biHeight = nEclHeight;
bi.biPlanes = 1;
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biSizeImage = dwBmpDatalen;
bi.biWidth = nEclWidth;
bi.biXPelsPerMeter = 1000;
bi.biYPelsPerMeter = 1000;
rgbColor[0].rgbBlue = 255;
rgbColor[0].rgbGreen = 255;
rgbColor[0].rgbRed = 255;
rgbColor[0].rgbReserved = 0;
rgbColor[1].rgbBlue = 0;
rgbColor[1].rgbGreen = 0;
rgbColor[1].rgbRed = 0;
rgbColor[1].rgbReserved = 0;
//
//加载LEFT
if (!file.Open(strPathLeft,CFile::modeCreate|CFile::modeWrite))
{
strMsg.Format(_T(" 打开 %s 文件失败!"),strPathLeft);
AfxMessageBox(strMsg);
return;
}
file.Write(&bf,sizeof(BITMAPFILEHEADER));
file.Write(&bi,sizeof(BITMAPINFOHEADER));
file.Write(rgbColor,2*sizeof(RGBQUAD));
pBmpData = new BYTE[dwBmpDatalen];
memset(pBmpData,0,dwBmpDatalen);
for (int h = 0; h<bi.biHeight; h++)
{
memcpy(pBmpData+h*nBmpBytePerline,pEclData[i*2+0]+h*nEclBytePerline,nEclBytePerline);
}
file.Write(pBmpData,dwBmpDatalen);
file.Close();
if (pBmpData)
{
delete[]pBmpData;
pBmpData = NULL;
}