QImageWriter als fertiges GUI-Interface ?

Alles rund um die Programmierung mit Qt
Antworten
Mati
Beiträge: 66
Registriert: 4. Januar 2006 00:11

QImageWriter als fertiges GUI-Interface ?

Beitrag von Mati »

Hallo,
über getSaveFileName kann ich den user nur dazu bringen nen file namen anzugeben.
Ich würde es gerne haben dass er auch noch das bildformat selbst wählen kann unter dem dann das bild gespeichert wird.
Gibt es da schon was vorgefertigtes irgendwo?
Oder wie wird das sonst üblich gemacht? (Aus Gimp kenne ich z.B dass je nach file-endung unterschiedliche feinheitseinstellungen wie Kompressionsgrad noch angezeigt werden etc...)

Danke für Ratschläge
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Übergib einfach einen Filter mit den jeweiligen Bildformaten.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Mati
Beiträge: 66
Registriert: 4. Januar 2006 00:11

Beitrag von Mati »

dachte ich auch aber ich bin mir unsicher ob er dann auch das format übernimmt...oder sollte ich für jeden selektierten filter dann eine if-anweisung generieren???

hier mal der code:

Code: Alles auswählen

QFileDialog* file_dialog = new QFileDialog(this);
    
    QString file_name = file_dialog->getSaveFileName(this, "Save As",
                                                    cur_file_name,
                                                    "*.jpg;;"
                                                    "*.jpeg;;"
                                                    "*.gif;;"
                                                    "*.png;;"
                                                    "*.bmp;;"
                                                    "*.mng;;"
                                                    "*.pbm;;"
                                                    "*.pgm;;"
                                                    "*.ppm;;"
                                                    "*.xbm;;"
                                                    "*.xpm");

QImage image(cur_file_name);
    image.save(file_name, "JPG");
Hier würde doch egal welcher filter gewählt wird immer mittels JPG -format gespeichert oder - Nur dass sich der Name dann halt nicht mit .jpg endet sondern mit dem gewählten?
Nur wie soll ich das ändern....müsste ich ja dann über selectedFilter() für jedes format nen if oder switch zweig generieren...?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Zumindest fällt mir derzeit nichts anderes ein... ein auto-detect gibts ja leider nicht.
Allerdings würde ich die Formate nicht hart codieren sondern QStringList QImage::inputFormatList () benutzen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Christian81 hat geschrieben:Zumindest fällt mir derzeit nichts anderes ein... ein auto-detect gibts ja leider nicht.
Doch gibt es...

http://doc.trolltech.com/4.1/qimagewrit ... ageFormats


Die naechste frage ist sicher wie man ein bild verkleinert ......

Code: Alles auswählen

void Gui_Image::ModpicsChanged(int newvalue_w)   /* int from QSlider 20px steeps  minimum 150 max pics width() */
{
     qDebug() << "### copyofimagefile... " << copyofimagefile;
     QPixmap pic(copyofimagefile);
     QPixmap scaled = pic.scaledToWidth(newvalue_w);
     centrale->setPixmap(scaled);  /* label */
     centrale->adjustSize();  /* label */
     actual =  centrale->pixmap()->size();
     hipx->display(QString::number(scaled.height()));
     qDebug() << "### Draw image and dispay new W x H px... ";
} 

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

Beitrag von Christian81 »

Ich habe nur in Qt3 geschaut...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Mati hat geschrieben:Nur wie soll ich das ändern....müsste ich ja dann über selectedFilter() für jedes format nen if oder switch zweig generieren...?
QFileInfo. Damit holst Du dir die Extension vom eingegebenen Namen und übergibst sie der save-Methode. Vorher aber prüfen, ob die Extension unterstützt wird.
Mati
Beiträge: 66
Registriert: 4. Januar 2006 00:11

Beitrag von Mati »

Danke euch,

wenn ich aber zusätzlich den Qualitätsgrad angeben lassen will komme ich wohl nicht um einen eigenen dialog herum nicht wahr ?
Antworten