char array in bitmap umwandeln



  • Hallo zusammen,

    eine Anwendung liefert mir ein 640*480 unsigned char array in dem in jedem Feld genau 1 Pixel eines 8 Bpp codierten Bitmaps gespeichert ist.
    Das ganze soll jetzt als 'echtes' BMP gespeichert werden, bzw im nächsten Schritt an eine Fkt übergeben werden, die mir daraus ein AVI macht.

    Hier mein bisheriger Ansatz:

    HDC hdcscreen=GetDC(0);
        HDC hdc=CreateCompatibleDC(hdcscreen);
        ReleaseDC(0,hdcscreen);
    
        HBITMAP memBM = CreateCompatibleBitmap ( hdcscreen,640,480 );
        SetBitmapBits(memBM,sizeof(cur_pic.image),&(cur_pic.image));
        //cur_pic.image ist das char array
    
        SelectObject ( hdc, memBM );
    
        AddAviFrame(avi,memBM); //hier kommt die Übergabe an die AVI-Fkt
    

    Allerdings bleibt memBM im Debugger immer bei 0x000000.
    Kann das so überhaupt funktionieren, oder muss da noch mehr passieren?

    Besten Dank!

    MfG,
    Markus



  • Das ist WinAPI spezifisch, also falsches Forum.



  • Mea culpa, mea maxima culpa.

    Werde sofort umziehen mit dem Thread.

    MfG,
    Markus



  • Nicht falsch verstehen. Die Chance, dass jemand dir hilft, weil er sich damit auskennt, ist im richtigen Forum wesentlich höher.
    Weil viele Leute nur im WinAPI-Forum schnüffeln, die dafür nicht im C++ oder Java Forum gucken.


  • Administrator

    unsigned char cBuffer[640 * 480]; // Das Chararray
    HBITMAP hBitmap = ::CreateBitmap(640, 480, 1, 8, cBuffer);
    

    Keine Garantie, dass es so funktioniert, aber eigentlich sollte es so gehen.

    Referenz:
    ::CreateBitmap(...)

    Grüssli



  • ➡ crossposting

    Greetz, Swordfish


Anmelden zum Antworten