erstellen eines BMP
-
nochmal kurz. wir bekomme ich die grösse meine pPixels arrays heraus? das brauche ich ja für die WRITE funktion.
so klappts jedenfalls nicht:
myfile.write(pPixels,64);
-
Du kannst schon die Größe mit 64 Angeben.
Aber der erste Parameter muss nach const char* gecastet werden, weil
write das 1. Argument so erwartet.myfile.write((const char*) pPixels, 64);
-
HALLO.
kannst du dir bitte noch einmal diesen code anschauen? dazu hätte ich folgende fragen:1.) wenn ich die header infos in die bitmap datei eintrage, ohne pixel dateien, ist die grösse der datei 40 BYTE. was ist da noch falsch (sollte doch 54 sein)? ich vermute, dass ich nicht alle in BYTE verwandeln sollte, oder?
oder kommt jetzt deine befürchtung zum tragen, dass ich nicht "myfile << Irgendetwas;" verwenden sollte?2.) angenommen, ich lasse dann den headerfile weg. warum ist die datei dann nur 64 BYTE gross, wenn ich "myfile.write" nutze, aber 256 BYTE, wenn ich die for-schleife einsetze? ich denke, ich muss anstatt von 16 die zahl 256 (also 4*64) einsetzen.
3.) welchen datentyp sollte das ARRAY haben, wenn ich dort alle daten (header- und pixelinfo) reinschreiben möchte?
... bmfh.bfSize = 310; // mit oder ohne HEADER (14+40)? ... bmfh.bfOffBits = 55; // ist das okay so? ... myfile.open("test.bmp",ofstream::binary); //sollte nun ne binärdatei sein, richtig? myfile<<(BYTE)bmfh.bfType <<(BYTE)bmfh.bfSize<<(BYTE)bmfh.bfReserved1 <<(BYTE)bmfh.bfReserved2<<(BYTE)bmfh.bfOffBits <<(BYTE)bmih.biSize<<(BYTE)bmih.biWidth<<(BYTE)bmih.biHeight <<(BYTE)bmih.biPlanes<<(BYTE)bmih.biBitCount<<(BYTE)bmih.biCompression <<(BYTE)bmih.biSizeImage<<(BYTE)bmih.biXPelsPerMeter<<(BYTE)bmih.biYPelsPerMeter <<(BYTE)bmih.biClrUsed<<(BYTE)bmih.biYPelsPerMeter; /* for (i=0;i<64;i++) { myfile << pPixels[i].rgbBlue << pPixels[i].rgbGreen << pPixels[i].rgbRed << pPixels[i].rgbReserved; } */ myfile.write((const char*) pPixels, 256);
DANKE NOCHMALS.
STICK.
-
hi.
no@one schrieb:
Schau mal hier nach:
http://easybmp.sourceforge.net/ich habe mir das heute mal angeschaut. nun habe ich feststellen müssen, dass mit dieser library alles viel einfacher geht und man sich ne ganze menge code ersparen kann.
so siehts nämlich jetzt aus:
#include <EasyBMP.h> int main () { BMP AnImage; int i,j; AnImage.SetSize(16,16); AnImage.SetBitDepth(24); for (i=0;i<16;i++) { for (j=0;j<16;j++) { AnImage(i,j)->Red = 10; AnImage(i,j)->Green = 20; AnImage(i,j)->Blue = 30; AnImage(i,j)->Alpha = 0; } } AnImage.WriteToFile("test.bmp"); return 0; }
darum werde ich wahrscheinlich damit weiterarbeiten.
STICK.