CBITMAP转为BYTE数组
来源:互联网 发布:linux下安装eclipse 编辑:程序博客网 时间:2024/06/16 02:06
//用GetBitmap获得图像数据大小 //用GetBitmapBits获得数据数组 BITMAP temBmp; pBmp->GetBitmap(&temBmp); iDataSize = ((temBmp.bmWidth + 31 ) / 32 * 4) * temBmp.bmHeight;//图像数据大小 pBmp->GetBitmapBits(iDataSize, pBits);//拷贝图像数据 memcpy(pByteBuff, pBmInfo, iHeadInfoSize);//拷贝头信息 拷贝位图中的信息到CBBitmap int iHeadInfoSize = sizeof(BITMAPINFOHEADER) + 2 * sizeof(RGBQUAD);//信息头大小 int iDataSize = ((iWidth + 31) / 32) * 4 * iHeight;//图像数据大小 int iTotalBytes = iHeadInfoSize + iDataSize; BYTE *pByteBuff = new BYTE[iTotalBytes]; memset(pByteBuff, 0, iTotalBytes); memcpy(pByteBuff, pBmInfo, iHeadInfoSize);//拷贝头信息 BYTE *pBits = pByteBuff + iHeadInfoSize; //将指针移动到数据区 memcpy(pBits, bmp.bmBits,iDataSize);//拷贝图像数据 CString sFilePath = _T("");//将CBitmap中的数据转到BYTE数组,然后存到CBBitmap中 CBPoint startPt(boxRect.left, boxRect.top); iTotalBytes = iHeadInfoSize +iDataSize; setContents(sFilePath, iTotalBytes, pByteBuff, boxRect.width(), boxRect.height(), startPt);