www.mikrocontroller.net

Forum: PC-Programmierung datenstream in Image umwandeln


Autor: Cedric Oettel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Pepe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Cedric Oettel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Cedric Oettel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahh sorry...mein Fehler...ich hab eine Verbindung über nen Socket
gemacht,statt eines TcpClientens.

Was is der unterschied zwischen
Socket und TcpClient?

MfG Cedric Oettel

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Cedric Oettel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Cedric Oettel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiß keiner warum das so is?

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

keine Ahung. Aber du kannst den Code ja mal hier rein stellen dann werf
ich mal einen Blick drauf und teste das hier lokal.

Matthias

Autor: Cedric Oettel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Turbohubert (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
LOL, ist das wieder Firefoxgülle oder warum ist die Darstellung so
sch...?

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

also irgendwie kann ich nicht erkennen wo da ein Image rübergeschoben
werden soll.

Matthias

Autor: Cedric Oettel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.