Pregunta

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); 

// después de CreateDIBSection Encontré que el código de error es 8, no hay suficientes recursos.

¿Cómo puedo evitar este error? Paso ancho: 3500 altura 2500 muchas gracias!

¿Fue útil?

Solución

Creo que la respuesta a esto es la misma que la respuesta a su pregunta anterior: sus mapas de bits son demasiado demasiado grandes.

Además, dado que sus dimensiones son ahora la mitad de las dimensiones del mapa de bits en su pregunta anterior, supongo que está tratando de dividir el destino en cuadrantes, pero ahora no tiene suficientes recursos para incluso crear el mapa de bits de destino Esto puede significar que tampoco está liberando la memoria de mapa de bits de sus intentos anteriores. Es posible que desee reiniciar e intentar todo esto nuevamente con imágenes de destino mucho más pequeñas.

Otros consejos

Simplemente no hay suficiente memoria para completar su comando. No se puede "arreglar" tal como está, excepto para tratar de romper algún límite de memoria.

Más bien, necesita dividir cualquier imagen en la que esté trabajando en tamaños manejables, para que puedan intercambiarse dentro y fuera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top