如何使用CImage正确加载灰度BMP的char数组?

时间:2011-04-21 20:21:42

标签: c++ c image visual-c++ bmp

我有以下代码:

cout<<"Please enter the name of your BMP image file: "<<endl;
cin>>fname;
nP = fname.c_str(); 
CImage input = CImage();
input.Load(nP);

// allocate space for host source image
unsigned char *pHI, *pCI;
width = input.GetWidth();
height = input.GetHeight();
pCI = (unsigned char *)input.GetBits();
pHI = (unsigned char *)malloc(sizeof(unsigned char) * width * height);

// fill array with CImage array content
srand (time(NULL));
for (int cnt = 0; cnt < sizeof(unsigned char) * width * height; cnt++){
    pHI[cnt] = pCI[cnt];
}

但是当我试图获得宽度和高度时,程序会给我一个错误。

“Debug Assertion Failed!... Expression:m_hBitmap!= 0”

如果您对可能导致此问题/我应该改变的内容有任何想法,我将非常感谢您的帮助!

:)

1 个答案:

答案 0 :(得分:1)

要检查的第一件事是input.Load()成功。它返回HRESULT,你应该检查它的值。这将是一个关于发生了什么的线索。

Link to CImage::Load()

您可以在此解释HRESULT的含义:

Details on HRESULT

祝你好运,但需要更多信息。

编辑后:此外,您只能对DIB部分使用CImage :: Load()。有关详细信息,请参阅此链接:CImage class reference