Windows — проблема C ++ WINAPI CreateDIBitmap

Я написал программу, которая загружает растровый файл (только) в окно, и он отлично работает для любого файла с .bmp extansion. Но я столкнулся со следующей проблемой, когда проводил тестирование. Я взял файл с .jpg Расширение, открыл его в Paint а затем сохранить его как файл BMP. Когда я запускал тест с этим новым файлом, моя программа загружала черное окно.

Я сделал отладку и выяснил, что biColorUsed поле BITMAPINFOHEADER структура ноль. В соответствии с доктор, это означает, что

растровое изображение использует максимальное количество цветов, соответствующее значению biBitCount
член для режима сжатия, указанного в biCompression.

biCompression Поле также равно нулю, что означает, что файл несжатый.

biBitCount равен 24, что означает (согласно тем же документам), что

Таблица цветов bmiColors используется для оптимизации цветов, используемых на устройствах с палитрой, и
должен содержать количество записей, указанное в элементе biClrUsed
BITMAPINFOHEADER

Это не может быть указано, потому что biClrUsed это ноль.

Итак, вопрос в том, BMP файл, созданный преобразованием JPG использование файла Paint действительно BMP файл?

П.С.
Я использую функцию CreateDIBitmap в моей программе. Когда я загружаю то же самое BMP файл с помощью LoadImage, он отлично работает.
Любые другие поля структур BITMAPFILEHEADER, BITMAPINFOHEADER загружен правильно. Вот почему я думаю, что я правильно загружаю данные из BMP файл. Я мог бы загрузить свой проект в GoogleDrive, а затем поделиться им, если это понадобится.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector