Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top