MFC快速创建bmp图片

定义:

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,2
sizeof(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;
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值