Я написал программу, которая загружает растровый файл (только) в окно, и он отлично работает для любого файла с .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, а затем поделиться им, если это понадобится.
Задача ещё не решена.
Других решений пока нет …