Nach "Cancel" verschwinden Werte
hallo, ich habe ein Problem mit dem Laden. Ich kann ein Bild laden (png) und speichere es dann als tiff. Und wenn ich dann das tiff laden möchte, wird nichts angezeigt.
Code: Alles auswählen
void TabEins::loadPic()
{
QString fileName = QFileDialog::getOpenFileName(this, "Open File", "/home",("Images(*.tiff *.png *.gif *.jgp *.jpeg *.bmp *.tiff *.xbm *.xpm)"));
if(!fileName.isEmpty()){
QImage file(fileName);
if(file.isNull()) { qWarning()<<"Fehler beim öffnen der Datei!";
}
qWarning() << "ok";
imageLabel->setPixmap(QPixmap::fromImage(file));
}
}Hmm mir fällt nichts ein ^^
das steht in der doku.... ganz ganz sicher 
QImage::QImage ( const QString & fileName, const char * format = 0 )
Constructs an image and tries to load the image from the file with the given fileName.
The loader attempts to read the image using the specified format. If the format is not specified (which is the default), the loader probes the file for a header to guess the file format.
If the loading of the image failed, this object is a null image.
The file name can either refer to an actual file on disk or to one of the application's embedded resources. See the Resource System overview for details on how to embed images and other resource files in the application's executable.
Ich würde die Methodeeher so aufbauen
[/code]
Code: Alles auswählen
void TabEins::loadPic()
{
QString fileName = QFileDialog::getOpenFileName(
this,
"Open File",
"/home",
("Images(*.tiff *.png *.gif *.jgp *.jpeg *.bmp *.tiff *.xbm *.xpm)"));
if (fileName.isEmpty() == false)
{
QImage file(fileName);
if (file.isNull() == true)
{
qWarning()<<"Fehler beim öffnen der Datei!";
}
else
{
qWarning() << "ok";
imageLabel->setPixmap(file);
}
}
}
hi,
also so funktioniert es leider auch nicht. Bei der letzten Zeile kommt eine Fehlermeldung, denn das muss
heissen. (oder??)
trotzdem danke.
lg
nici
also so funktioniert es leider auch nicht. Bei der letzten Zeile kommt eine Fehlermeldung, denn das muss
Code: Alles auswählen
imageLabel->setPixmap(QPixmap::fromImage(file));trotzdem danke.
lg
nici
Hmm mir fällt nichts ein ^^
Dann probier doch mal ein Tiff in deinem Programm zu laden, welches mit Gimp geht.nici hat geschrieben:ne also das tiff-Bild das ich laden möchte, kann ich mit gimp nicht öffnen.
Dass du png und jpeg öffnen kannst ist doch shconmal ein fortschritt. Denn es zeigt dir, dass deine Routine prinzipiell funktioniert.In meiner Oberfläche kann ich png, jpeg, .. öffnen.
Was für ein Plugin meinst du??
Somit müssen wir nur noch schauen, dass das Tiff funktioniert.
Und das Plugin ist bei mir dieses:
/usr/lib/qt4/plugins/imageformats/libqtiff.so
Nur seh ich grad dass da auch jpeg als plugin drinnen liegt (Dachte das wäre wie png ein fester Bestandteil der qt-gui). Somit können wir annehmen, dass deine imageformats und somit auch das tiff-plugin (wenn es denn installiert ist) für dein Programm zugänglich sind.
Also liegts an nem fehlerhaften Tiff.
hmm das kann auch sein, vlt speicher ich ja falsch.
lg
nici
Code: Alles auswählen
void TabEins::savePic()
{
QFileDialog *tmp = new QFileDialog;
QString Dateiendung= " *.tiff";
QString fileName = tmp->getSaveFileName (this, "Speichern", "unbekannt" ," *.tiff;; *.png;; *.jgp;; *.jpeg;; *.bmp;; *.tiff;; *.xbm;; *.xpm", &Dateiendung);
//falls vom Benutzer keine Dateiendung angegeben wird:
qWarning() << "TEST" << fileName;
if(!fileName.isEmpty()){
if (fileName.section('.', -1)!=Dateiendung.section('.',-1))
{ //Dateiendung an den Namen hängen:
fileName.append(Dateiendung.section('*',-1));
}
imageLabel->pixmap()->save(fileName);
}
};nici
Hmm mir fällt nichts ein ^^
In der Annahme, dass die Doku Recht hat und tiff nur mit QImage handhabbar ist (hab das nicht getestet), speicher mal so ab:
Wobei hier noch Raum für Fehlerbehandlung besteht.
Code: Alles auswählen
imageLabel->pixmap()->toImage().save(fileName);Klappt es denn auch mit dem png, welches du lädst um es als tiff zu speichern?
Warum willst du eigentlich das Tiff speichern? Die Qualität wird nicht besser als das png, nur mehr (Platten)Speicher wird verbraten.
Ansonsten klappt hier alles bestens (Qt-4.4.2, Gentoo Linux, AMD64) mit diesen beiden Schnippseln:
Warum willst du eigentlich das Tiff speichern? Die Qualität wird nicht besser als das png, nur mehr (Platten)Speicher wird verbraten.
Ansonsten klappt hier alles bestens (Qt-4.4.2, Gentoo Linux, AMD64) mit diesen beiden Schnippseln:
Code: Alles auswählen
// Variante 1:
QImage image("./test.png");
image.save("test.tiff");Code: Alles auswählen
// Variante 2:
QLabel label;
QPixmap pix("./test.png");
label.setPixmap(pix);
// save...
label.pixmap()->save("./test.tiff");
label.show();