遇到相机的图像数据需要保存成图片的问题,相机的的图像数据中是不含有文件头等信息的.此种数据保存成JPG需要先将数据在内存中存储BMP然后使用CImage转换成JPG.下面是转换过程:
CDC *pDC;
pDC=pDlg->GetDC();//取得窗体DC
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;
iWidth = pBuffer_1->GetWidth();//图像宽度为2048像素
iHeight = pBuffer_1->GetHeight();//图像的高度2048像素
MemDC.CreateCompatibleDC(pDC);
MemBitmap.CreateCompatibleBitmap(pDC,iWidth/4,iHeight/4);//需要保存的图像为原来的1/4
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);//图像在MemDC中
下面是将8位图像数据放入CBitmap中:
LONG lWidth=2048;
LONG lHeight=-2048;//注意此位置为负值因为BMP图像数据存储是上下倒置
LPBITMAPINFO lpbmi;
// BMP文件头的句柄
HANDLE hBmpFileHead;
//计算信息头和调色板的大小
hBmpFileHead=::GlobalAlloc(GHND,sizeof(BITMAPINFOHEADER)
+ sizeof(RGBQUAD)
* 256);
if(hBmpFileHead==0)
{
AfxMessageBox("分配内存失败");
return;
}
//填充信息头
lpbmi=(LPBITMAPINFO)::Glob