Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » bmp in ein 2D-Array schreiben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.09.2004, 13:11 Uhr
Sapphira



Hallo,

wie kann ich ein bmp-file in ein 2D-Array schreiben?
Ich habe das Bild Test.bmp welches in C:\Test.bmp abgespeichert ist.

Ich wollte es mit CBitmap arbeiten.

Also,
CBitmap bmpBitmap;

bmpBitmap.CreateBitmap(...)

..., aber wie bekomme ich die Informationen raus, die ich für CreateBitmap benötige?

BOOL CreateBitmap(
int nWidth, //Specifies the width (in pixels) of the bitmap.
int nHeight, //Specifies the height (in pixels) of the bitmap.
UINT nPlanes, //Specifies the number of color planes in the bitmap.
UINT nBitcount, //Specifies the number of color bits per display pixel.
const void* lpBits /*Points to a short-integer array that contains the initial
bitmapbit values. If it is NULL, the new bitmap is left
uninitialized.*/
);

wie gehe ich weiter vor, nachdem CreateBitmap erfolgreich war?

Danke
Sapphira

Dieser Post wurde am 27.09.2004 um 13:12 Uhr von Sapphira editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.09.2004, 14:49 Uhr
(un)wissender
Niveauwart


Hm, warum lädst du das Bild nicht einfach mit LoadBitmap, oder so? Ich meine, du willst es ja nicht erschaffen, sondern nur laden und dann in dein Array kopieren (die Farben?).
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.09.2004, 15:26 Uhr
Sapphira



Ich mache folgendes:


C++:
HBITMAP hBmp1 = (HBITMAP)::LoadImage(NULL,Filename,IMAGE_BITMAP,0,0,
                LR_LOADFROMFILE|LR_CREATEDIBSECTION);

if(hBmp1)
{
    CBitmap bmp, bmpClone;
    if(bmp.Attach(hBmp1)!=0)
    {
        BITMAP  bi;
        bmp.GetBitmap(&bi);

        BYTE** pImage = new BYTE*[bi.bmWidth];
        for(int i=0; i<bi.bmWidth; i++)
            pImage[i] = new BYTE[bi.bmHeight];

        DWORD dwValue, dwValue2;
        int offset=0;        
        double factor=bi.bmBitsPixel;
        
        BYTE* bmpBuffer=(BYTE*)GlobalAlloc(GPTR, bi.bmWidth*bi.bmHeight)
        dwValue=bmp.GetBitmapBits(bi.bmWidth*bi.bmHeight, bmpBuffer);                                        
        for(int x=0; x<bi.bmWidth; x++)
        {
            for(int y=0; y<bi.bmHeight; y++)
                pImage[x][y] = bmpBuffer[x*bi.bmHeight+y];
        }
          
        GlobalFree((HGLOBAL)bmpBuffer);//Free memory
    }
}



wie könnte ich nun ein neues bmp-File erstellen, um das ausgelesene Bitmap dort zu speicher?

Dieser Post wurde am 27.09.2004 um 15:28 Uhr von Sapphira editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.09.2004, 16:42 Uhr
(un)wissender
Niveauwart



CBitmap::CreateBitmapIndirect
sollte helfen.

Btw. das hier muss noch freigegeben werden:

C++:
BYTE** pImage = new BYTE*[bi.bmWidth];
for(int i=0; i<bi.bmWidth; i++)
  pImage[i] = new BYTE[bi.bmHeight];




und zwar so:

C++:
for(int i=0; i<bi.bmWidth; i++)
  delete [] pImage[i];
delete [] pImage;



--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.09.2004, 16:51 Uhr
(un)wissender
Niveauwart


CImage ist wohl besser, da gibt es auch Load und Save, bei Bitmap musst du Save von hand machen.

CImage speichern und laden

CImage::SetPixel und CImage::GetPixel
--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 27.09.2004 um 16:58 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: