Ориентация файла BMP: вертикальная или перевернутая?

Я работаю над программой для изменения размера файла BMP и сохранения его в новом файле. Я заметил, что некоторые BMP хранятся полностью в перевернутом виде, а другие — просто в вертикальном. Поэтому я сделал два решения для обоих случаев. Мой вопрос: как заранее узнать, хранится ли BMP в вертикальном или перевернутом виде? Чтобы я мог решить, какое решение использовать вместо того, чтобы пробовать оба решения с каждым BMP!


person Moaz Naseem    schedule 05.04.2018    source источник
comment
какое это имеет отношение к концу файла? Если BMP хранятся по-другому (я немного удивлен), то я полагаю, что в начале файла должен быть флаг или какие-то метаданные, которые могут сказать вам об этом.   -  person Kami Kaze    schedule 05.04.2018
comment
@KamiKaze Я подумал, что, возможно, один из способов узнать, хранится ли BMP в вертикальном или перевернутом виде, - это найти EOF, и если он находится в правом нижнем углу изображения, это означает, что он хранится в вертикальном положении, а если он справа верхний угол, это означает, что он хранится в перевернутом виде. Но после всех этих размышлений я думаю, что это было намного проще, чем это. Благодаря vmt он упомянул, что я могу легко определить ориентацию по знаку bi.biHeight (отрицательному или положительному).   -  person Moaz Naseem    schedule 06.04.2018


Ответы (1)


Ответ лежит в структуре BITMAPINFOHEADER.

Из: http://msdn.microsoft.com/en-us/library/windows/desktop/dd318229(v=vs.85).aspx

Для несжатых растровых изображений RGB, если biHeight имеет положительное значение, растровое изображение представляет собой восходящий DIB с исходной точкой в ​​левом нижнем углу. Если значение biHeight отрицательное, растровое изображение представляет собой DIB сверху вниз с исходной точкой в ​​верхнем левом углу.

person vmt    schedule 05.04.2018
comment
Добро пожаловать в СО. действительно хороший первый ответ. - person Jean-François Fabre; 05.04.2018
comment
Давний наблюдатель, постер впервые. Обычно. Спасибо! - person vmt; 05.04.2018
comment
FWIW, я всегда голосую за вопросы, на которые отвечаю. Я полагаю, что если стоит ответить, то стоит и проголосовать. - person user3386109; 05.04.2018
comment
@user3386109 meta.stackoverflow.com/questions/359703/ - person Jean-François Fabre; 05.04.2018
comment
@Jean-FrançoisFabre Интересное чтение, ваш ответ должен быть ближе к началу :) - person user3386109; 05.04.2018
comment
благодаря. Забавно, что вопрос получил много голосов, а ответ - нет :) поэтому, я думаю, существует дискуссия. - person Jean-François Fabre; 05.04.2018