From: "Charles Crawshaw" Newsgroups: comp.os.msdos.djgpp References: <01bd3cb6$33fd61c0$LocalHost AT none> Subject: Re: Reading a bitmap (.bmp) Date: Fri, 20 Feb 1998 11:51:56 -0000 Lines: 52 NNTP-Posting-Host: nas10-32.thefree.net Message-ID: <34ed6f79.0@news.thefree.net> To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Mark wrote in message <01bd3cb6$33fd61c0$LocalHost AT none>... >I've been trying to read a bitmap file recently, >and have been having difficulty locating pallete >entries, as well as finding inconsistencies in the way >bmp files are written. > >Does anybody know where all the stuff to do with the pallete >is actually located? I've managed to locate the actual data, >and the resolution indicators by myself. I know I'll eventually >be able to figure this out on my own, I just want to save a little >time. If anybody could give me a little background on why the >files are changing so slightly when they are saved, that would >be even better. Failing that, resources where this information >is availible would also be appreciated. > >Thanks in advance. > > -Mark > -apocalypse AT BTinternet DOT com I assume your talking about 256 color bitmaps when you want the palette. 24bit ones have no palette. The palette in 256 color bitmaps is stored at offset (dec) 54 into the file. The file format is such that you read the byte for blue then green then red and then an alignment byte (which you ignore). This means the palette does not take up 3*256 bytes as you might expect, but rather 4*256. The data comes straight after the palette. The data starts at offset 1078 (dec). Be careful when reading the data because the bitmap format aligns the data in a strange way. This only happens with files which have an odd number width. Say you have a file which is 3x3 and is just one color (index 10). The data will look as follows: 0a 0a 0a 00 0a 0a 0a 00 0a 0a 0a 00 If you had a 5x5 file it would look like this: 0a 0a 0a 0a 0a 00 00 00 0a 0a 0a 0a 0a 00 00 00 0a... I hope you understand this. Look at a file in a hex editor to get a better understanding. 24bit bitmaps start the data at offset 54 (dec) and have no palette. They just have blue then green then red data for each pixel.