BITMAPINFO bmi;
memset(&bmi,0,sizeof(BITMAPINFO));
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth =m_pImg->GetWidth();
bmi.bmiHeader.biHeight =m_pImg->GetHeight();
bmi.bmiHeader.biPlanes = 1;
//if( m_pImg->GetInfo()->biBitCount!=16)
//{
// bmi.bmiHeader.biBitCount = m_pImg->GetInfo()->biBitCount;
//}
//else
//{
//ASSERT((m_pImg->GetInfo())->bmiHeader->biBitCount == 24);
bmi.bmiHeader.biBitCount=24;
bmi.bmiHeader.biCompression = BI_RGB;
if (bmi.bmiHeader.biSizeImage == 0)
bmi.bmiHeader.biSizeImage =
WidthBytes(bmi.bmiHeader.biWidth,bmi.bmiHeader.biBitCount) * bmi.bmiHeader.biHeight;
if(bmi.bmiHeader.biClrUsed == 0 && bmi.bmiHeader.biBitCount <16)
bmi.bmiHeader.biClrUsed=DWORD(1 <<bmi.bmiHeader.biBitCount);
m_nNewSize=bmi.bmiHeader.biSizeImage;
if(m_hbmCanvasBitmap!=NULL)
{
DeleteObject(m_hbmCanvasBitmap);
m_hbmCanvasBitmap=NULL;
m_pCanvasBits=NULL;
}
// 创建直接与DC相关联的位图
m_hbmCanvasBitmap=CreateDIBSection(m_hDC, &bmi, DIB_RGB_COLORS,(void**)&m_pCanvasBits, NULL, NULL); // CreateDIBSection后发现错误码为8,资源不足。
如何避免此错误?我通过宽度: 3500高2500多谢了!
发布于 2009-09-18 01:47:34
我认为这个问题的答案和你之前问题的答案是一样的:你的位图太大了。
此外,由于您现在的维度是前面问题中位图维度的一半,我猜您正在尝试将目标划分为象限,但现在您甚至没有足够的资源来创建目标位图。这可能意味着您也不会从以前的尝试中释放位图内存。您可能希望重新启动,并使用小得多的目标映像再次尝试所有这些操作。
发布于 2009-09-18 01:47:11
没有足够的内存来完成您的命令。您不能按原样“修复”它,除非尝试打破一些内存边界。
相反,您需要将您正在处理的任何图像拆分为可管理的大小,以便它们可以交换进来和交换出来。
https://stackoverflow.com/questions/1442213
复制相似问题