Pergunta

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

// após CreateDIBSection Eu encontrei o código de erro é de 8, nenhum recurso suficiente.

Como posso evitar esse erro? Passo largura: altura 3500 2500 muito obrigado!

Foi útil?

Solução

Eu acho que a resposta para isso é o mesmo que a resposta à sua pergunta anterior:. Suas bitmaps são maneira muito grande

Além disso, desde que suas dimensões são agora metade das dimensões do bitmap na sua pergunta anterior, eu estou supondo que você está tentando quebrar o destino se em quadrantes, mas agora você não tem recursos suficientes para até mesmo criar o bitmap destino. Isso pode significar que você também não está liberando a memória bitmap de suas tentativas anteriores. Você pode querer reiniciar e tentar tudo isso novamente com o muito imagens mais pequenas de destino.

Outras dicas

Simplesmente não há memória suficiente para concluir seu comando. Você não pode "consertar"-lo como é, exceto para tentar quebrar alguns limites de memória.

Em vez disso, você precisa dividir qualquer imagem em seu trabalho em tamanhos gerenciáveis, para que eles possam ser trocados dentro e para fora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top