QPixmap in XML-Datei speichern?

Alles rund um die Programmierung mit Qt
Antworten
KuhTeh
Beiträge: 4
Registriert: 3. April 2008 18:21

QPixmap in XML-Datei speichern?

Beitrag von KuhTeh »

Ich möchte ein QPixmap in eine Xml-Datei mittels QXmlStreamWriter speichern. CDATA-Konstrukte werden über writeCDATA( const QString ) übergeben. Ich muss mein QPixmap-Objekt also zuvor in einen String umformen:
QVariant var= myQPixmap;
Habe dann versucht, das QVariant per QVariant.toString() an writeCDATA zu übergeben.
Es stellte sich heraus, dass das Programm nur eine leere CDATA-Sequenz in der Datei ablegt. Der Fehler muss also schon bei der QVariant-Umformung geschehen sein. QPixmap stellt aber ausdrücklich einen "Zitat: operator QVariant() const" zur Verfügung.
Was mache ich falsch? Gibt es einen geschickteren Weg?
[/b]
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Man kann nicht aus jedem QVariant einen QString machen. QVariant::canConvert()

QPixmap in ein QByteArray sichern, QByteArray in Base64 konvertieren
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Du solltest aber bedenken, dass der Speicherplatzverbrauch des Bildes sich dann um einiges erhöht, wenn du es in base64 konvertierst. Aber ich halte das auch für die Beste Möglichkeit, wenn du unbedingt das Bild in einer XML Datei speichern wilslt.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ggf. nicht direkt als QPixmap sondern als jpeg oder so.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Ggf. nicht direkt als QPixmap sondern als jpeg oder so.
Wuerd ich von der Art der bilder abhaengig machen ...
jpeg lohnt sich nur, bei groesseren bildern / fotografien ...

Die in nen XML zu pappen halt ich eh fuer gewagt, was ned heisst das es ned gehen wuerd ^^

Denk mal es handelt sich eher um kleine grafiken ... eher symbole / pictogramme. Da wuerd ich png empfehlen ... macht die wenigsten probs. dafuer iss der platzverbrauch groesser ... aber wer sowas in nem xml speichern will, hat primaer eh andere sorgen ...

base64 ist nicht nur ideal, sondern grad dafuer gemacht, um bytefolgen in darstellbare ASCII zeichen zu expandieren .... da XML nix anderes akzeptiert, bist eh auf sowas angewiesen. Sich selber da was zu ueberlegen waer das rad neu erfinden ...

Ciao ..
KuhTeh
Beiträge: 4
Registriert: 3. April 2008 18:21

Beitrag von KuhTeh »

Erstmal Danke für die Beiträge.
Ich komme aber irgendwie nicht weiter. Wie bekomme ich die Daten in ein QByteArray? Die Umformung nachBase64 kann ausserdem doch erst erfolgen, denn ich die Daten schon im QByteArray habe.
Der Aufruf der Funktion "operator QVariant()" in QPixmap und QImage sind auch nicht weiter erläutert.
ConfusedSushi
Beiträge: 57
Registriert: 18. Januar 2008 16:46
Wohnort: Berlin

Beitrag von ConfusedSushi »

eventuell kann man um Platz zu sparen
das ByteArray noch mittles qCompress
komprimieren bevors nach base64 geht
ConfusedSushi
Beiträge: 57
Registriert: 18. Januar 2008 16:46
Wohnort: Berlin

Beitrag von ConfusedSushi »

KuhTeh
Beiträge: 4
Registriert: 3. April 2008 18:21

Beitrag von KuhTeh »

@ConfusedSushi:
Tausend Dank! Ich habe die entsprechende "Class Reference" bestimmt 100 Mal in der Hand gehabt, aber ....
Genau was ich gesucht habe. Thankx!
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

QPixmap in ein QByteArray sichern
Hättest du die Funktion gefunden, wenn ich den Satz in englisch geschrieben hätte?

Wenn ein qCompress wirklich noch was bringt, dann hat man beim ablegen des QPixmaps ins QByteArray schon was falsch gemacht...
ConfusedSushi
Beiträge: 57
Registriert: 18. Januar 2008 16:46
Wohnort: Berlin

Beitrag von ConfusedSushi »

aber wenn ich das richtig verstanden hab sichert QPixmap:save rohdaten ...

zusätzlich zum Platz sparen ist mir grad noch der QImageWriter ins Auge gefallen.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

bool QPixmap::save ( QIODevice * device, const char * format = 0, int quality = -1 ) const

This function writes a QPixmap to the given device using the specified image file format and quality factor. This can be used, for example, to save a pixmap directly into a QByteArray:
ConfusedSushi
Beiträge: 57
Registriert: 18. Januar 2008 16:46
Wohnort: Berlin

Beitrag von ConfusedSushi »

ok grossmeister :P
Antworten