CBitmap als bmp file speichern
-
Mit
CBitmap bmpPicture; bmpPicture.LoadBitmap(IDB_BITMAP1);
geht das ja wunderbar, aber wie kann man das mit
einem Bitmapfile machen, das noch auf der Festplatte liegt?bmpPicture.LoadBitmap("c:\\test.bmp");
ist ja nicht drin.
-
Niemand eine Idee?
-
ich dachte eigentlich bis vorhin dass es so geht wie du es beschrieben hast (bitmap.Load("C:\\test.bmp"))... nun steh ich vor dem selben problem ... wenn ich eine lösung hab schreib ich sie mit hier rein
mfg, TFTS
-
Wäre nett, denn ich habe da auch noch keine Idee wie das laufen könnte.
Muss man dann ggf. von CBitmap abweichen?
-
::LoadImage, dann CBitmap::FromHandle.
-
CBitmap bmpPicture; //bmpPicture.LoadBitmap(IDB_BITMAP1); HBITMAP hBitmap; hBitmap =(HBITMAP)::LoadImage( NULL , "c:\\test.bmp" ,IMAGE_BITMAP , 0 , 0 , LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE ); bmpPicture.FromHandle(hBitmap);
Führt zu einem Fehler sobald ich das Bild speichern will.
Das Programm schmiert mir an der Stelle ab.
-
Riogrande schrieb:
Führt zu einem Fehler sobald ich das Bild speichern will.
Das Programm schmiert mir an der Stelle ab.FromHandle ist eine statische Methode. Der Rückgabewert - den du unter den Tisch fallen lässt - ist das interessante.
-
Danke, ich habe es jetzt fertig.
-
was ist daran falsch?
HBITMAP hBitmap =(HBITMAP)::LoadImage( NULL , csFilePath ,IMAGE_BITMAP ,0 ,0 , LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE ); pCBitmap=CBitmap::FromHandle(hBitmap); CSize dimension = pCBitmap->GetBitmapDimension(); *pWidth = dimension.cx; *pHeight = dimension.cy;
dimension.cx und dimension.cy sind immer 0 ... warum?
mfg, TFTS
-
TFTomSun schrieb:
dimension.cx und dimension.cy sind immer 0 ... warum?
MSDN Library schrieb:
If the bitmap width and height have not been set by using SetBitmapDimension, the return value is 0.
Du suchst CBitmap::GetBitmap.
-
danke! ... hat zwar dann immer noch nich ganz geklappt, aber ich hab jetz einen weg gefunden.
HBITMAP hBitmap =(HBITMAP)::LoadImage( NULL , csFilePath ,IMAGE_BITMAP ,0 ,0 , LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE ); if (pCBitmap->DeleteObject()) // War Bitmap vorhanden, lösen pCBitmap->Detach(); // Aktuell geladenes Bitmap mit Bitmap-Objekt verbinden pCBitmap->Attach(hBitmap); //pCBitmap=CBitmap::FromHandle(hBitmap); BITMAP bmBitmap; pCBitmap->GetBitmap(&bmBitmap); *pWidth = bmBitmap.bmWidth; *pHeight = bmBitmap.bmHeight;
-
Habe euren Thread im Interesse verfolgt.
Kann man damit auch große jpg bilder als mini bilder abspeichern? Danke.
-
nein aber schau dir das mal an:
http://www.smalleranimals.com/jpegfile.htm
da bekommst du einen Byte Pointer mit den RGB Daten (24Bit) zurück ... wenn du diese in BGR 32Bit konvertierst, kannst du sie dann zu nem CBitmap machen...
mfg, TFTS