Уважаемые знатоки! Обнаружилась вот какая непонятка...
Создавая маленький фильтрик для обработки отсканированных изображений я обнаружил, что он срабатывает не на всех файлах. Файлы с глубиной серого цвета 8 bpp имеют разные размеры: от 2956х2312 до 2886х2272.
В таких bmp'шках первые 1078 байт содержат информацию о файле и растре. Тогда, если на каждый пиксел приходится по одному байту, то растр размером 2886х2272 должен занимать:
2886 х 2272 = 6 556 992 + 1078 = 6 558 070 байт, тогда как
его реальный (файловый) размер составляет
6 562 614 байта, те в расчете
не хватает или где-то не учитывается 4 544 байта. Можно предположить, что в конце каждой строчки растра дописываются по 2 байта, тогда 2 * 2272 = 4 544 и при таком раскладе расчетный и реальный размеры совпадают.
Но, если файл имеет размер, например, 2956х2312, то по тем же расчетам он должен занимать:
2956 х 2312 = 6 834 272 + 1078 = 6 835 350, что один в один совпадает с файловым размером.
Внимание вопрос!
Откуда, при одних и тех же условиях, берутся лишние байты в первом случае и что они могут означать?