Я работаю над программой для изменения размера файла BMP и сохранения его в новом файле. Я заметил, что некоторые BMP хранятся полностью в перевернутом виде, а другие — просто в вертикальном. Поэтому я сделал два решения для обоих случаев. Мой вопрос: как заранее узнать, хранится ли BMP в вертикальном или перевернутом виде? Чтобы я мог решить, какое решение использовать вместо того, чтобы пробовать оба решения с каждым BMP!
Ориентация файла BMP: вертикальная или перевернутая?
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
Добро пожаловать в СО. действительно хороший первый ответ.
- person Jean-François Fabre; 05.04.2018
Давний наблюдатель, постер впервые. Обычно. Спасибо!
- person vmt; 05.04.2018
FWIW, я всегда голосую за вопросы, на которые отвечаю. Я полагаю, что если стоит ответить, то стоит и проголосовать.
- person user3386109; 05.04.2018
@user3386109 meta.stackoverflow.com/questions/359703/
- person Jean-François Fabre; 05.04.2018
@Jean-FrançoisFabre Интересное чтение, ваш ответ должен быть ближе к началу :)
- person user3386109; 05.04.2018
благодаря. Забавно, что вопрос получил много голосов, а ответ - нет :) поэтому, я думаю, существует дискуссия.
- person Jean-François Fabre; 05.04.2018