RGB Werte aus einer BMP Resource erlangen



  • Hallo miteinader,

    ich versuche verzweifelt aus einer Resource die RGB Werte eines BMPs zu bekommen.
    Hier meine momentanter Versuch

    CBitmap picture1;
        bool result = false;
        result = WebcamIcon.LoadBitmap(IDB_PICTURE_1);
    
        BITMAP bmp;
        memset(&bmp, 0, sizeof(bmp));
        picture1.GetBitmap(&bmp);
        int w = bmp.bmWidthBytes;
        int h = bmp.bmHeight;
        int datasize = h * w;
        BYTE *pFileData = new BYTE [datasize];
        picture1.GetBitmapBits(datasize, pFileData);
    

    leider steht in pFileData nur komisches Zeug.
    Ist in meinem Ansatz schon ein Denkfehler?

    Bin für jede Hilfe dankbar!
    Grüße André



  • Du hast da etweder was verdreht oder machst das noch net so lange oder wie auch immmer

    CBitmap picture1;
        bool result = false;
        result = WebcamIcon.LoadBitmap(IDB_PICTURE_1); //entweder in picture1 laden
    
        BITMAP bmp;
        memset(&bmp, 0, sizeof(bmp));
        picture1.GetBitmap(&bmp);  //oder hier WebcamIcon verwenden
        int w = bmp.bmWidthBytes;
        int h = bmp.bmHeight;
        int datasize = h * w;
        BYTE *pFileData = new BYTE [datasize];
        picture1.GetBitmapBits(datasize, pFileData); //und hier
    

    aber aus der uninizialisierten Bitmap picture1 wirst du auch nur Schrott bekommen.

    Wobei das doch sicher einfacher geht:

    BITMAP     bm;
        CBitmap    BM;
        BM.LoadBitmap(IDB_PICTURE_1);
        BM.GetObject(sizeof(BITMAP), (LPSTR)&bm);
    
        BYTE *bmpBuffer = new BYTE[ bm.bmWidthBytes*bm.bmHeight ];//allocate memory for image
                                                  //byte buffer
    
        ULONG dwValue=BM.GetBitmapBits(bm.bmWidthBytes*bm.bmHeight,
                       bmpBuffer);//Get the bitmap bits  
                                  //into a structure*/
    


  • Gnraf... "WebcamIcon" sollte natürlich "picture1" heißen, hatte das hier leider falsch gepastet, sorry. Den Ansatz von dir mittels getObject finde ich eleganter!
    Vielen Dank!

    Den Fehler den ich eigentlich gemacht hatte lag darin, dass ich von RGB Werten in dem Array ausging, tatsächlich aber stehen dort BGRA Werte drinne, und damit ist dann das Zeug auch nicht mehr so ganz komisch was da steht 🙂

    Grüße André


Anmelden zum Antworten