1
$\begingroup$

I'm studying Microsoft Windows Bitmap File Format, extension BMP.
I'm curious to know why scanlines are stored on file from bottom to up: the last scanline on image is the first line on file and the first scanline on image is the last line on file.
The documents that I have read do not explain it.

$\endgroup$
  • $\begingroup$ That...is entirely a matter of taste and how you define your image data layout. There is no universal "first" or "last". 50% of formats store them bottom-up and 50% top-down. The first line in the file is the first scanline because it's...the first scanline in the file's order. What you could argue is that Windows normally prefers a top-down coordinate system in the rest of its 2D operations (although, that's also largely configurable). In light of that context this layout might indeed seem unusual. But don't fall in the trap of thinking there's a universal order the file ought to have. $\endgroup$ – Christian Rau May 28 at 9:40
2
$\begingroup$

Here's a quote from Petzold:

So, in DIBs, the bottom row of the image is the first row of the file, and the top row of the image is the last row in the file. This is called a bottom-up organization. Because this organization is counterintuitive, you may ask why it's done this way.

Well, it all goes back to the OS/2 Presentation Manager. Someone at IBM decided that all coordinate systems in PM—including those for windows, graphics, and bitmaps—should be consistent. This provoked a debate: Most people, including programmers who have worked with full-screen text programming or windowing environments, think in terms of vertical coordinates that increase going down the screen. However, hardcore computer graphics programmers approach the video display from a perspective that originates in the mathematics of analytic geometry. This involves a rectangular (or Cartesian) coordinate system where increasing vertical coordinates go up in space.

In short, the mathematicians won. Everything in PM was saddled with a bottom-left origin, including window coordinates. And that's how DIBs came to be this way.

Source: Charles Petzold, Programming for Windows 5th Edition, Chapter 15.

from https://stackoverflow.com/questions/8346115/why-are-bmps-stored-upside-down

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.