QImage über QTcpSocket senden

Alles rund um die Programmierung mit Qt
Antworten
tseucs
Beiträge: 33
Registriert: 2. August 2006 12:30

QImage über QTcpSocket senden

Beitrag von tseucs »

Hallo,

folgendes Problem: Ich habe eine Bilddatei (z.b. logo.png) die ich über einen QTcpSocket an einen anderen Rechner schicken möchte.
Mache ich das über

Code: Alles auswählen

QFile datei("logo.png");
QByteArray ba = datei.saveAll();
socket.write(ba);
funktioniert es einwandfrei.
Da es ja aber auch mal andere Bildtypen sein können (gif, jpg, usw) und ich sicher gehen möchte, das ein PNG am anderen Ende ankommt, wollte ich den Umweg über QImage gehen:

Code: Alles auswählen

QImage logo("logo.png");
QByteArray ba;
QBuffer buffer(&ba);
logo.save(&buffer, "PNG");
socket.write(ba);
Leider kommt dann aber am anderen Ende nur Müll raus, nämlich eine Datei die ca. 10 % größer ist als das Original - und entsprechend auch nicht mehr verarbeitet werden kann.
Weiss jemand was ich hier falsch mache und wie ich das Problem lösen kann?

Gruß
Torsten
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Den Buffer sollte man schon schliessen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
tseucs
Beiträge: 33
Registriert: 2. August 2006 12:30

Beitrag von tseucs »

Danke, habe ich eingebaut - das Ergebnis ist das selbe: Die Datei ist einfach zu Groß.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Was gibt write() zurück? Wann wird socket wieder gelöscht? Ggf. bevor es alle Daten senden konnte?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
tseucs
Beiträge: 33
Registriert: 2. August 2006 12:30

Beitrag von tseucs »

Rückgabe von write: 23477

Der Socket wird erst viel später geschlossen, nach dem write mache ich aber ein waitForBytesWritten(-1). Und auf der anderen Seite kommt ja auch mehr an als es sollte und nicht weniger. Das irritiert mich ja so.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn Du nur n Byte schickst kann auf der anderen Seite nicht mehr ankommen. Ich würde die Daten auf der anderen Seite mal genau anschauen. Vor allem wie sie ausgelesen werden.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten