datenstream in Image umwandeln

Gast #249948
Lesenswert?

Hi,
Das Programm ist in C#!!
ich habe einen Clienten und einen Server programmiert.Die Verbindung
funktioniert und auch das Filestream.

Meine Frage ist:
Ich würde gern ein Bild vom Server schicken und dieses SOFORT in einer
PicturBox im Clienten anzeigen lassen.
Mit welchen Stream geht man an die sache?
Muss man die bytes auslesen und "per hand" umwandeln lassen?

Danke im vorraus ^^'


MfG Cedric Oettel
Gast #249949
Lesenswert?

Hallo,

im einfachsten Fall sollte das ungefähr so funktionieren:

Bitmap newBitmap = Image.FromStream(tcpclient.GetStream()) as Bitmap;
pictureBox1.Image = newBitmap;

Ich weiß jetzt natürlich nicht wie dein Client aussieht deshalb musst
du das höchstwahrscheinlich anpassen. Bin mal von TcpClient aus
System.Net.Sockets ausgegangen.

gruß
Pepe
Gast #249950
Lesenswert?

also ich hab das jetzt eingebaut.Scheint jetzt auch logisch ^^'
Jedoch wenn ich
Bitmap bmp = Image.FromStream(clientsocket.
eingebe erhalte ich nur
-GetType
-GetHashCode
-GetSocketOption

und die anderen....(Recieve,Connect,Shutdown usw...)
Weiß jetzt nich wie ich das anwenden soll.

MfG Cedric Oettel
Persönliche Seite #249952
Lesenswert?

Hi

für das Netzwerk ist beides das gleiche. Beide bieten eine TCP/IP
Verbindung an (TcpClient in Verbindung mit TcpListener). Die Klasse
TcpClient abstrahiert die Verbindung für dich als Programmierer etwas
besser da du wirklich einen Stream hast und nicht mehr einzelne Pakete
hin und herschieben mußt sondern eben auf einem Stream arbeitest.

Socket implementiert das Standard TCP Interface wie es auf allen
Netzwerk- und TCP fähigen Betriebssystemen vorhanden sein sollte.
TcpClient ist einfach etwas komfortabler.

Matthias
Gast #249953
Lesenswert?

@ Matthias
ahh danke....

Also ich hab jetzt mal vom Server aus eine .JPG file per NetworkStream
gesendet.Beim Clienten erhalte ich diese auch als Bytes.
Das umwandeln in eine Bild datei ist auch nicht (mehr) das Problem.
da nutz ich den MemoryStream und Image.FromStream

Das Bild wird jedoch nicht komplett dargestellt.
An dem Buffer kann es eigentlich nicht liegen,weil ich den schon
mehrfach erhöht hatte.

Ich denke,das der Stream nur eine bestimmte Länge überträgt,die leider
in einer "long" festgelegt werden musste.

Woran kann es liegen? Wenn ihr den Quellcode dazu benötigt,dann bitte
sagen,dann setzt ich ihn noch rein.

MfG Cedric Oettel
Angehängte Dateien:
Gast #249956
Lesenswert?

also ich hab den Quelltext von folgender Seite.

http://www.uni-koblenz.de/~hagbard/csharp/csharp_03.html

genau diesen. ACHTUNG!!! bei Firefox wird die Seite total falsch
dargestellt. Beim Internet Explorer nicht.

Die Datei ,die ich schicke ist etwa 20kb groß.
die Umwandlung lautet dann.
MemoryStream ms = new MemoryStream(buffer,0,rec.Length);
Image im = Image.FromStream(ms);
this.pictureBox2.BackgroundImage = im;

Ich möchte mich entschuldigen,dass ich einen kleinen code hier gepostet
habe und eine URL!!!

MfG Cedric Oettel
Gast #249959
Lesenswert?

ahh ok.
Also beschreib jetzt mal den Programmaufbau.
ACHTUNG!!!! Bin noch ein ziemlicher Noob in C# und habe einen
schrecklichen Programmierstile.

Also:
Ich möchte ja Bilder(vom Desktop) aufnehmen und dann gleich per Stream
über internet an einen Clienten schicken,der dann diese Bilder gleich
in  einer Picturebox oder als hintergrundbild der Form sieht.

Also hab mir so gedacht,dass ich das über die screenshotfunktion
machen.
Die Funktion wird per Timer aller 200 ms ausgelöst,damit ein flüssiges
Bild entsteht.
Das Problem beim übertragen ist,das die verbindung ständig sein muss.

Ich habe meinen komplette Quelltext jetzt doch mal angehangen...

Bei Fragen(ich hoffe doch) BItte einfach melden
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren