TImage1->MemoryStrem->TImage2 ????
-
Hi Leute!
Wie krieg ich ein Jpg, das in einer TImage-Komponente liegt in einen Stream - und von dem Stream in ein weiteres TImage-Feld (Image2) rein?
Habs mal so probiert:
--------
TMemoryStream *mem=new TMemoryStream();
// Datei wird in Image-Feld geladen...
Image1->Picture->LoadFromFile("c:\\test.jpg");
//Grafik wird in den STream geladen...
Image1->Picture->Graphic->SaveToStream(mem);//zurückspulen....
mem->Position=0;//Grafik soll im Image2 angezeigt werden --- Hier entsteht der Fehler EAccessViolation:
Image2->Picture->Graphic->LoadFromStream(mem);
//saubermachen...
delete mem;
------------------Wer weiß Rat???
Martin
-
Anmerkung:
Mir ist grad aufgefallen, daß wenn ich in das Image2-Feld am Anfang ein anderes Jpg-Bild lade, funktionierts.... ???So:
-----
TMemoryStream *mem=new TMemoryStream();
// Datei wird in Image-Feld geladen...
Image1->Picture->LoadFromFile("c:\\test.jpg");
Image1->Picture->LoadFromFile("c:\\anderesBild.jpg");//Grafik wird in den STream geladen...
Image1->Picture->Graphic->SaveToStream(mem);//zurückspulen....
mem->Position=0;//Grafik soll im Image2 angezeigt werden --- Hier entsteht der Fehler EAccessViolation:
Image2->Picture->Graphic->LoadFromStream(mem);
//saubermachen...
delete mem;------
Muß das Image2-Feld erst initialisiert werden -und wenn ja - wie mache ich das auch ohne vorheriges Laden eines anderen Bildes???
Martin
-
hab leider keine lösung,
aber hast du schon versucht, ob der selbe
fehler mit *.bmp auftritt?
-
Du könntest den Umweg über ein extra TJPEGImage gehen.
TJPEGImage * jpg = new TJPEGImage(); jpg->LoadFromStream(mem); Image2->Picture->Assign(jpg); delete jpg;
Ich gehe mal davon aus, dass du das Bild mittels Stream über's Netz verschicken willst, oder? Denn ansonsten wäre es ja einfacher, die Bildinhalte direkt per Assign zuzuweisen.