Ошибка CreateDIBSection

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 большое спасибо!

2 ответа

Решение

Я думаю, что ответ на это совпадает с ответом на ваш предыдущий вопрос: ваши растровые изображения слишком велики.

Кроме того, поскольку ваши измерения теперь составляют половину размеров растрового изображения в вашем предыдущем вопросе, я предполагаю, что вы пытаетесь разбить место назначения на квадранты, но теперь у вас недостаточно ресурсов, чтобы даже создать целевое изображение. Это может означать, что вы также не освобождаете растровую память от своих предыдущих попыток. Вы можете перезагрузиться и попробовать все это снова с гораздо меньшими изображениями назначения.

Недостаточно памяти для выполнения команды. Вы не можете "исправить" это как есть, кроме как попытаться сломать некоторую границу памяти.

Скорее, вам нужно разделить любое изображение, над которым вы работаете, на управляемые размеры, чтобы их можно было обменивать и выгружать.

Другие вопросы по тегам