Frage zu Bitmaps
-
Hallo,
ich habe eine Frage zum Schreiben von Bitmaps (undter Windows):
Ich habe mir den Wikipedia-Artikel zu Bitmaps durchgelesen und bis auf die Sache mit der Farbtabelle auch eigentlich alles verstanden. Könnte mir das jemand erklären oder evtl. den Sourcecode zum Schreiben eines Bildes posten?
Bisheriger Code (nicht ganz sicher, dass es bisher richtig ist)
#include <cstdio> #include <windows.h> using namespace std; int main(void) { const int Breite = 0, Hoehe = 0; FILE* bitmapDatei = fopen("test.bmp", "wb"); char bfType[] = {'B','M'}; DWORD bfSize = 0; //Kann ich ja im Momen noch nicht bestimmen DWORD bfReserved = 0; DWORD bfOffBits = 54; //+Größe der Farbtabelle DWORD biSize = 40; LONG biWidth = Breite; LONG biHeigth = Hoehe; WORD biPlanes = 1; WORD biBitCount = 8; DWORD biCompression = 0; DWORD biSizeImage = 0; LONG biXPelsPerMeter = 0; LONG biYPelsPerMeter = 0; DWORD biClrUsed = 0; //Oder die Anzahl der Einträge der Farbtabelle DWORD biClrImportant = 0; fwrite(bfType, sizeof(char), 2, bitmapDatei); fwrite(&bfSize, sizeof(DWORD), 1, bitmapDatei); fwrite(&bfReserved, sizeof(DWORD), 1, bitmapDatei); fwrite(&bfOffBits, sizeof(DWORD), 1, bitmapDatei); fwrite(&biSize, sizeof(DWORD), 1, bitmapDatei); fwrite(&biWidth, sizeof(LONG), 1, bitmapDatei); fwrite(&biHeigth, sizeof(LONG), 1, bitmapDatei); fwrite(&biPlanes, sizeof(WORD), 1, bitmapDatei); fwrite(&biBitCount, sizeof(WORD), 1, bitmapDatei); fwrite(&biCompression, sizeof(DWORD), 1, bitmapDatei); fwrite(&biSizeImage, sizeof(DWORD), 1, bitmapDatei); fwrite(&biXPelsPerMeter, sizeof(LONG), 1, bitmapDatei); fwrite(&biYPelsPerMeter, sizeof(LONG), 1, bitmapDatei); fwrite(&biClrUsed, sizeof(DWORD), 1, bitmapDatei); fwrite(&bibiClrImportant, sizeof(DWORD), 1, bitmapDatei); //Hier fehlt die Farbtabelle }
Ich möchte das Bitmap unkomprimiert und mit 8 Bit Farbtiefe abspeichern.
Eigentlich brauche ich auch nur drei Farben: Weiß, Schwarz und Rot.
Schonmal vielen Dank
Felix
EDIT: Ich habe das Problem jetzt selber gelöst, wenn ich mal Zeit finde (wahrscheinlich Morgen), poste ich die Lösung mal, falls es jemanden interessiert.