[gelöst]QByteArray wird ungewöhnlich groß

Alles rund um die Programmierung mit Qt
Antworten
Breeny
Beiträge: 6
Registriert: 26. Juli 2007 08:44
Wohnort: Bremen

[gelöst]QByteArray wird ungewöhnlich groß

Beitrag von Breeny »

Hallo,

ich fange gleich mal mit dem Code an, um den es sich handelt:

Code: Alles auswählen

glReadBuffer(GL_FRONT);
framePic = grabFrameBuffer();
framePic.convertToFormat(QImage::Format_Mono);
buffer.setBuffer(&byte);
buffer.open(QIODevice::WriteOnly);
framePic.save(&buffer, "PPM", 0);
buffer.close();
Ich hole mir aus dem FrameBuffer das aktuelle Bild als QImage, speichere dies in mein QByteArray, da ich dieses danach noch via TCPSocket versenden möchte. Klappt auch alles wunderbar, bis auf einen kleinen Haken...

Code: Alles auswählen

qDebug() << "Byte:" << byte.size();
Diese Abfrage, mache ich nach dem oben angeführtem Text.
und byte.size() gibt mir extrem unterschiedliche Werte. Im Schnitt, habe ich eine Göße von 20 000, sobald ich jetzt aber das aktuelle Fenster schließe und z.B. den Desktop anzeigen lasse, liegt die Größe zwischen 100 000 und 1 000 000, was ntürlich nicht mehr sende fähig ist.
Wenn ich dann wieder zurück gehe und z.B. wieder VS anzeigen lasse geht die Größe sofort wieder runter. Ich kann auch kein Muster erkennen, bei welche Fenster das auftritt und bei welchen nicht.

Wie kann es sein, dass dort solche Schwankungen auftreten und wie kann ich es verhindern?

Das Bild, welches ich aus dem framebuffer hole ist immer gleich groß. Es kann also nur an framePic.save liegen. Ich hab auch verschieden QImage Formate probiert. Vom jpg, png über PGM zu PPM.

Vielleicht ist es ja einfach eine Kleinigkeit die ich übersehe 8)

Info: ich nutze QT4 und Visual Studio 2005
Zuletzt geändert von Breeny am 8. November 2007 08:13, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

framePic auf Festplatte speichern und schauen wie gross es dort ist.
buffer mit Trunacte öffnen damit man auch wirklich sicher ist dass der vorige Inhalt gelöscht wurde.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Breeny
Beiträge: 6
Registriert: 26. Juli 2007 08:44
Wohnort: Bremen

Beitrag von Breeny »

Wenn ich es speichere schwankt es zwischen 80 und 114kb. 114kb hat es, wenn byte.size() mir 20 000 oder 400 000 ausgibt. Ich erkenne da einfach keine Sinn.
Truncate habe ich eingefügt, hat aber leider nicht geholfen.
Der Fehler besteht nach wie vor :(
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Aber Du weisst schon dass die Bildformate komprimiert sind??
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Breeny
Beiträge: 6
Registriert: 26. Juli 2007 08:44
Wohnort: Bremen

Beitrag von Breeny »

Das ist mir wohl bewusst.
Aber trotzdem klärt das ja nicht die Frage, wieso die Byteanzahl schwankt, wenn ich das Fenster wechsle.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Naja - anderer Bildschirminhalt - andere Komprimierung würde ich mal sagen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Verwende halt BMP dann ist die Paketgröße konstant...
Breeny
Beiträge: 6
Registriert: 26. Juli 2007 08:44
Wohnort: Bremen

Beitrag von Breeny »

Naja, dann geht das wohl so nicht, wie ich es geplant hatte.

Trotzdem danke.
Antworten