Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Image als Stream versenden (https://www.delphipraxis.net/52558-image-als-stream-versenden.html)

hibbert 30. Aug 2005 22:30


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

storm1988 30. Aug 2005 22:46

Re: Image als Stream versenden
 
Zerbs

Um ein Image als Stream zu versenden musst du so vorgehn:

Delphi-Quellcode:
FStream := TFileStream.Create( pfad, fmCreate );
Image1.Picture.Bitmap.SaveToStream;
Und um es wieder als Image zu speichern:

Delphi-Quellcode:
Image1.Picture.Bitmap.LoadFromStream(FStream)
Mfg st0rm

hibbert 30. Aug 2005 23:04

Re: Image als Stream versenden
 
Hi,
also ich habe da mal gleich was ausprobiert:
Delphi-Quellcode:
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;
Mit meinem Quelltext wird einfach nur ein Bild namens test.jpg im Programmverzeichnis angelegt.

Wie kann ich dieses Bild nun auf einem anderen PC (zb. im Netzwerk) anzeigen ?

thx hibbert

tigerman33 31. Aug 2005 08:27

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

storm1988 31. Aug 2005 10:17

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: Link

Mfg st0rm

ManuMF 31. Aug 2005 10:17

Re: Image als Stream versenden
 
Hallo,

sieh dir erst ein mal diesen Code an.

Dann kannst du im Sender folgendes ersetzen:
Delphi-Quellcode:
var FStream : TMemoryStream;

  FStream := TMemoryStream.Create;
  Bild.Picture.Bitmap.SaveToStream(FStream);
  IDS := TidStreamVCL.Create(FStream);
Und im Empfänger das:
Delphi-Quellcode:
var FSTream : TMemoryStream;

  FStream := TMemoryStream.Create;
  IDS := TidStreamVCL.Create(FStream);

  Bild.Picture.Bitmap.LoadFromStream(FStream);

  FStream.Free;
  IDS.Free;
end;
Die Datei-Open-/Save-Dialoge fallen dann natürlich weg.
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

hibbert 31. Aug 2005 19:33

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

ManuMF 1. Sep 2005 09:00

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.

hibbert 2. Sep 2005 17:09

Re: Image als Stream versenden
 
ok ich habs ausprobiert und es geht, naja ich muss noch dran arbeiten :wink:

danke !!

storm1988 2. Sep 2005 17:22

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

hibbert 2. Sep 2005 17:32

Re: Image als Stream versenden
 
Ich möchte Bilder zwischen 2 PCs austauschen, und das Quasi als Livestream. Und wie ich das bis jetzt gesehen habe, kann nur der Client die Bilder versendnen und der Server empfangen.

Wenn das ganze auch umgekehrt geht und auch gleichzeitig in dichter Abfolge waäre das natürlich auch gut :wink:

hibbert

Mr_G 2. Sep 2005 17:53

Re: Image als Stream versenden
 
Schau dir doch einfach mal die Indy-Demo mit dem Chat an. Dort empfängt der Client und sendet der Server auch. Das Prinzip brauchst du dann nur noch auf deine Streams zu übertragen.
Was mich darüber hinaus interessieren würde wäre wie viele Bilder du eigentlich versenden willst...

hibbert 2. Sep 2005 18:00

Re: Image als Stream versenden
 
naja,
ich greife das Bild meiner Webcam bzw. videocam ab, speicher das al jpeg und will das übers inet versenden.

und da möchte ich gerne sowas wie ein livestream draus machen.

Besser wäre natürlich ein Server der das Bild local spiechert und die Clienten holen sich immer das Bild.
ZZt ist das so das ich das Bild versende.

hibbert

Mr_G 2. Sep 2005 18:11

Re: Image als Stream versenden
 
Das hört sich einfacher an als es meiner Meinung nach ist...
Vielleicht solltest du dir mal diese Sachen ansehen:
http://forum.dsdt.info/...
Hier im Forum suchenFernwartung
Hat zwar nichts mit Webcams zu tun aber wenn du mich fragst kommts aufs gleiche raus... Such dir dort doch einfach mal ein paar Anregungen um deinen Livestream zu realisieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 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