Seite 1 von 1

QImageWriter als fertiges GUI-Interface ?

Verfasst: 24. Juni 2006 22:24
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

Verfasst: 25. Juni 2006 18:22
von Christian81
Übergib einfach einen Filter mit den jeweiligen Bildformaten.

Verfasst: 25. Juni 2006 19:47
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...?

Verfasst: 25. Juni 2006 21:25
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.

Verfasst: 26. Juni 2006 10:04
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... ";
} 


Verfasst: 26. Juni 2006 10:08
von Christian81
Ich habe nur in Qt3 geschaut...

Verfasst: 26. Juni 2006 10:47
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.

Verfasst: 26. Juni 2006 19:12
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 ?