TBitmap -> TByteDynArray -> TBitmap



  • Ich versuche eine TBitmap in ein TByteDynArray umzuwandeln, um es übers Netzwerk versenden zu können. Doch entweder klappt die Umwandlung TBitmap -> TByteDynArray oder TByteDynArray -> TBitmap nicht.

    TBitmap *bmp = new TBitmap;
    	TStream *st = new TMemoryStream;
    	TByteDynArray *bda = new TByteDynArray();
    	bmp->LoadFromFile("C:\\y.bmp");
    
    	bmp->SaveToStream(st);
    	st->Seek(0, 0);
    	bda->Length = st->Size;
    	st->Write(*bda, 0, int(st->Size));
    
    	TBitmap *bmp2 = new TBitmap;
    	TStream *st2 = new TMemoryStream();
    
    	st2->Read(*bda, 0, bda->Length);
    	bmp2->LoadFromStream(st2);
    	bmp2->SaveToFile("C:\\y2.bmp");
    
    	delete bmp, bmp2;
    

    Jemand eine Idee?



  • Was soll bitte der Umweg über TByteDynArray?
    Wenn du die Bitmap schon im Stream gespeichert hast, dann ist doch alles gut. Nimm einfach einen Network Stream und sende und empfange die Bitmap darüber.
    Schau dir mal ScreenThief - stealing screen shots over the Network an.



  • Ich benutze bereits einen UDPServer und dieser benötigt ein TByteDynArray.



  • Abgesehen davon hast du ein Speicherleck. Zeile 19 tut nicht das, was du vermutest, du solltest dir noch mal anschauen, was der Komma-Operator macht.


Anmelden zum Antworten