Jag vill få fram den information som ligger i header delen på en bmp fil. Jag har försökt med många olika varianter men inget verkar fungera. Såhär ser ett av försöken ut men detta fungerar inte. Till att börja med bör du skriva <fstream> istället, samma argument som med <iostream>. BITMAPFILEHEADER och BITMAPINFOHEADER är strukturer. En lite krånglig metod du kan använda är att verifiera BMP-filen först, så du vet exakt var felet uppstår. Kolla upp filformatets struktur, kolla av alla variabler du får fram i en testfil, etc. Jag har redan testat de mesta, steg för steg och kollat värden osv, hittar inte felet. Säkert något jätte simpelt man missat. 1. Det jag menade var att du ska ladda ner bmp-specifikationen, kolla upp variablerna i en hexeditor, för att sen kolla vari problemet ligger. Det kan ju vara något löjligt i stil med att det krävs ett offset på en byte eller något, och då ser man det nog lättast i en hexeditor.Läsa en BMP Header
<code>
#include <iostream>
#include <fstream.h>
#include <windows.h>
using namespace std;
int main()
{
BITMAPFILEHEADER he1;
BITMAPINFOHEADER he2;
ifstream in("test.bmp", ios_base::binary);
if (in.is_open())
{
cout << sizeof(he1) << endl;
in.read((char *) &he1, sizeof( he1 ));
cout << he1.bfType << endl;
cout << he1.bfSize << endl;
cout << he1.bfOffBits << endl;
in.read((char *) &he2, sizeof( he2 ));
cout << he2.biSize << endl;
cout << he2.biWidth << endl;
cout << he2.biHeight << endl;
cout << he2.biSizeImage << endl;
cout << he2.biBitCount << endl;
cin.get();
}
in.close();
}
</code>
Någon som vet hur man ska gå till väga? Jag kanske är helt fel ute.Sv: Läsa en BMP Header
Och "using namespace std;" bör ligga inuti main än utanför.
Själva problemet:
Har inte själv gjort samma sak, men BITMAP... är väl båda strukturer?
I så fall bör ju in.read-grejen vara korrekt. Kommer strukturerna i den ordning du anger?
Vad är det som inte funkar?Sv: Läsa en BMP Header
Felet är att jag får helt felaktiga värden då jag använder cout. Så som jag uppfattat det efter att ha läst på msdn så ska det vara rätt ordning. Jag har däremot testat att vända på det och har även testat använda andra strukturer...Sv: Läsa en BMP Header
Om du då vet vad du ska få ut så borde du kunna jämföra dem ganska bra.
Förresten - där de där strukturerna är definierade, finns det inga färdiga funktioner?Sv: Läsa en BMP Header
Finns en hel del funktinoer som använder de där strukturerna men vet inte om de finns någon där man kan hämta ut den information som ligger i strukturerna.Sv: Läsa en BMP Header
2. Det jag menade med funktioner var: Finns det ingen funktion typ
BITMAP... GetBitmapDataFromFile(file);
som löser det automatiskt?