C++ Bitmap Random PixelData



  • Hallo,

    bei meinen weiteren Experimenten mit Bitmaps und C++, bin ich nun auf ein
    Problem mit dem PixelData "Block" gestoßen. Ich möchte dabei für meine
    Pixel Data zufallsgenerierte Zahlen. (bmpFile/Info Header funktionieren)
    Hier mein Ansatz (nur für 32x32 BMP - monochrome):

    ofstream bmpfile;
    	bmpfile.open(filename,  ios::binary | ios::out);
    //FileHeader, InfoHeader + RGBQuad
    	vector <DWORD> pxData;
    	{
    		for (int i = 0; i < height; i++)
    		{
    			UINT32 rnd = rand() % 255 + 1;
    			pxData.push_back(rnd);
    		}
    	}
    // [...]
    bmpfile.write((char *)&pxData, sizeof(pxData));
    

    Mein Ziel ist es quasi in den Vektor 4 Byte (UINT32) zu schreiben, welche
    zufallsgeneriert werden und das eben für jede Zeile in der Bitmap. Wenn ich
    jetzt zum Beispiel 200 als Zahl herausbekomme müssten die 4 Bytes um Nullen
    ergänzt werden (also 0xC8 0x00 0x00 0x00). Allerdings bekomme ich beim
    betrachten mit dem HexEdit auf andere Zahlen, als die zufallsgenerierten
    und bekomme für meine PixelData immer nur auf genau 16 Bytes, egal welche
    Höhe (in der for-Schleife). Ausgeben wird es richtig, allerdings nicht
    korrekt in die Datei geschrieben, kann mir jemand helfen? 😕

    Gruß

    Cyax



  • bmpfile.write((char *)&pxData[0], pxData.size()*sizeof(DWORD));



  • Danke 🙂
    hat funktioniert...

    Gruß

    Cyax


Log in to reply