![]() |
Image als Stream versenden
Hi,
ich habe auf meinem Formbaltt ein Image. Dieses Image wird regelmäßig aktualisiert. Nun möchte ich aber gerne, das dieses Bild als "Livestram" an einen Clienten verschickt wird. Muss ich dazu erst das Image auf Festplatte speichern und dann als Datei verschicken und vom Clienten neu laden lassen ? Oder kann ich das ganze auch machen, ohne das Bild abzuspeichern ? ich bin erstmal für jede Hilfe dankbar. thx hibbert |
Re: Image als Stream versenden
Zerbs
Um ein Image als Stream zu versenden musst du so vorgehn:
Delphi-Quellcode:
Und um es wieder als Image zu speichern:
FStream := TFileStream.Create( pfad, fmCreate );
Image1.Picture.Bitmap.SaveToStream;
Delphi-Quellcode:
Mfg st0rm
Image1.Picture.Bitmap.LoadFromStream(FStream)
|
Re: Image als Stream versenden
Hi,
also ich habe da mal gleich was ausprobiert:
Delphi-Quellcode:
Mit meinem Quelltext wird einfach nur ein Bild namens test.jpg im Programmverzeichnis angelegt.
procedure TForm1.Button1Click(Sender: TObject);
var fStream: tfilestream; begin FStream := TFileStream.Create(extractfilepath(application.exename)+'test.jpg', fmCreate ); image1.Picture.Bitmap.SaveToStream(FStream); fstream.Free; end; Wie kann ich dieses Bild nun auf einem anderen PC (zb. im Netzwerk) anzeigen ? thx hibbert |
Re: Image als Stream versenden
Dazu musst du dich wohl noch ein bisschen mit Netzwerk-Programmieren beschäftigen. Da kenn ich mich aber leider nicht aus. :cry:
Aber was anderes: Wenn du nicht erst auf der Festplatte speichern willst, kannst du anstelle eines FileStreams das Bild auch in einem MemoryStream speichern und dann direkt das durchs Netz jagen |
Re: Image als Stream versenden
Moin
Um den FileStream an einem anderen Computer im Neztwerk oder auch im Internet zu versenden würd ich die Indy 10 Komponente IdTCP verwenden. Dazu gibts schon einige Threads zum versenden von Streams: ![]() Mfg st0rm |
Re: Image als Stream versenden
Hallo,
sieh dir erst ein mal ![]() Dann kannst du im Sender folgendes ersetzen:
Delphi-Quellcode:
Und im Empfänger das:
var FStream : TMemoryStream;
FStream := TMemoryStream.Create; Bild.Picture.Bitmap.SaveToStream(FStream); IDS := TidStreamVCL.Create(FStream);
Delphi-Quellcode:
Die Datei-Open-/Save-Dialoge fallen dann natürlich weg.
var FSTream : TMemoryStream;
FStream := TMemoryStream.Create; IDS := TidStreamVCL.Create(FStream); Bild.Picture.Bitmap.LoadFromStream(FStream); FStream.Free; IDS.Free; end; Diese Lösung müsste aufs Erste funktionieren. Wenn nicht, dann nimm doch FileStreams, wie im Beispiel, aber natürlich gespeichert von der Grafik (LoadFromStream...). Gruß, ManuMF |
Re: Image als Stream versenden
hi,
ich habe zwar kein indy10 habe es aber mit den indy 9 hinbekommen, ist ja nicht ganz anders :wink: vielen dank. nun habe ich noch eine letzte Frage: kann ich IdTcpClient und IdTcpServer auf ein Formblatt packen und beie auf active = true stellen ? Beide Kompos laufen über den gleichen port, nur der Client hat einen anderen Rechner als Host. Geht das gut, oder eher nicht ? Denn ich möchte ja geren zwischen 2 PC Dateien austauschen, undzwar gleichzeitig. thx hibbert |
Re: Image als Stream versenden
Einfach mal ausprobieren ;-)
(Zumindest bei Indy 10) Hat nur der Server die Eigenschaft Active. Theoretisch dürfe es aber kein Problem sein, nur wenn man zwei Clients oder zwei Server auf einer Form hat, könnte es Probleme geben. |
Re: Image als Stream versenden
ok ich habs ausprobiert und es geht, naja ich muss noch dran arbeiten :wink:
danke !! |
Re: Image als Stream versenden
Mhhh, für was willst du überhaupt einen Server und einen Client gleichzeitig in einem Prozess packen??? Denn das versenden von Streams funst eh in beide Richtungen.
Mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz