Entwickler-Ecke
Internet / Netzwerk - BMP via Indy ohne zwischenspechern übertragen
maxk - So 29.09.02 16:02
Titel: BMP via Indy ohne zwischenspechern übertragen
Hi,
wie kann ich mit den InDy's einen Screenshot versenden, ohne eine Datei zu speichern oder zu laden? Der zu versendende Screenshot liegt im Speicher als BMP vor.
maxk
maxk - Fr 07.03.03 21:06
So, damit der Post nicht unbeantwortet bleibt, hier die Lösung:
Ich empfehle mit einem JPEG zu arbeiten, da dieses wesentlich kleiner ist als ein Bitmap. Die Umwandlung BMP->JPEG soll hier nicht weiter interessieren. Hier also der Code:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var MS:TMemoryStream: begin MS:=TMemoryStream.Create; JPEG.SaveToStream(MS); MS.Position:=0; Client.WriteStream(MS); // Client bezeichnet die Indy-Komponente MS.free; end; |
Das kann dann so wieder empfangen werden:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var MS:TMemoryStream; begin MS:=TMemoryStream.Create; Client.ReadStream(MS); MS.Position:=0; // ist sehr wichtig, da TJpegImage sonst streikt JPEG.LoadFromStream(MS); MS.free; end; |
Der Code speichert keine Daten auf der HD. (Virtueller Speicher zählt nicht :twisted: )
maxk
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!