Почему bmps хранится вверх ногами? - PullRequest
15 голосов
/ 01 декабря 2011

Почему изображения BMP хранятся вверх ногами и дополняются нулями, так что они выровнены по четырем байтам?

Ответы [ 2 ]

31 голосов
/ 01 декабря 2011

Вот цитата из Petzold:

Итак, в DIB нижняя строка изображения - это первая строка файла, а верхняя строка изображения - последняя строка вфайл.Это называется восходящей организацией.Поскольку эта организация нелогична, вы можете спросить, почему это так.

Ну, все это восходит к OS / 2 Presentation Manager.Кто-то в IBM решил, что все системы координат в PM, включая системы для окон, графики и растровых изображений, должны быть согласованными.Это вызвало дискуссию: большинство людей, включая программистов, которые работали с полноэкранным программированием текста или оконными средами, думают в терминах вертикальных координат, которые увеличивают спуск по экрану.Тем не менее, хардкорные программисты компьютерной графики подходят к видеоизображению с точки зрения, которая берет свое начало в математике аналитической геометрии.Это включает в себя прямоугольную (или декартову) систему координат, где растущие вертикальные координаты идут вверх в пространстве.

Короче, математики победили.Все в ПМ было связано с левым нижним началом, включая координаты окна.И вот как DIB стали такими.

Источник : Чарльз Петцольд, Программирование для Windows 5-е издание , Глава 15.

0 голосов
/ 01 декабря 2011

Они сохраняются в соответствии с системой координат дисплея.(0, 0) находится в верхнем левом углу.X (соответствует ширине) идет слева направо.Y (соответствует высоте) идет сверху вниз.

Что касается "вопроса 4 байта", см. Почему "шаг" в конструкторе System.Drawing.Bitmap должен быть кратным 4?

...