Как правильно загрузить массив символов в BMP в градациях серого, используя CImage? - PullRequest
1 голос
/ 22 апреля 2011

У меня есть следующий код:

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];
}

Но программа выдает ошибку, когда я пытаюсь определить ширину и высоту.

"Ошибка отладки! ... Выражение: m_hBitmap! = 0"

Если у вас есть идеи относительно того, что может быть причиной этого / что я должен изменить, я был бы признателен за помощь!

:)

1 Ответ

1 голос
/ 22 апреля 2011

Первое, что нужно проверить, это то, что input.Load() успешно. Возвращает HRESULT, и вы должны проверить значение этого. Это будет ключ к пониманию того, что происходит.

Ссылка на CImage :: Load ()

Вы можете интерпретировать, что означает HRESULT здесь:

Подробная информация о HRESULT

Удачи, но нужна дополнительная информация.

После редактирования: более того, вы можете использовать CImage :: Load () только для разделов DIB. См. Эту ссылку для получения дополнительной информации: Ссылка класса CImage

...