Seite 1 von 1

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

Verfasst: 7. November 2007 09:57
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

Verfasst: 7. November 2007 10:48
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.

Verfasst: 7. November 2007 11:14
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 :(

Verfasst: 7. November 2007 11:43
von Christian81
Aber Du weisst schon dass die Bildformate komprimiert sind??

Verfasst: 7. November 2007 12:59
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.

Verfasst: 7. November 2007 15:44
von Christian81
Naja - anderer Bildschirminhalt - andere Komprimierung würde ich mal sagen.

Verfasst: 7. November 2007 18:47
von upsala
Verwende halt BMP dann ist die Paketgröße konstant...

Verfasst: 8. November 2007 08:13
von Breeny
Naja, dann geht das wohl so nicht, wie ich es geplant hatte.

Trotzdem danke.