QPixmap liefert auf anderem Rechner .width=0 und .heigth=0

Alles rund um die Programmierung mit Qt
Antworten
harry_m
Beiträge: 74
Registriert: 26. April 2010 23:16

QPixmap liefert auf anderem Rechner .width=0 und .heigth=0

Beitrag von harry_m »

Ich verwende in meiner Applikation die Klasse "QPixmap". Es wird ein .jpg bzw. .png Bild geladen und dann seine Größe mit
"pixmap.width()" und
"pixmap.heigth()"

ermittelt:

pixmap.load(pictPathName );
qDebug() << "pixmap.width(): " << pixmap.width() << ", pixmap.height: " << pixmap.height();

QRect pixmapRect = pixmap.rect();
qDebug() << "PixmapRect.widht: " << pixmapRect.width() << ", PixmapRect.hight: " << pixmapRect.height();


Meine Enwicklungsumgebung (QtCreator auf WinXP SP3) befindet sich in einer VM. Dort funktioniert alles bestens.

Kopiere ich die Applikation samt mingw- und Qt-Bibliotheken auf den Host, so wird für die allermeisten Bilder die Größe = "0" geliefert.

Aber ich habe ja fleißig gelesen: das berühmt-berüchtigte "Plugin"-Problem stand im Verdacht. Dachte ich mir, denn in der Qt-Hilfe steht, dass ".jpg" und ".png" standardmäßig (sprich ohne PlugIns) unterstützt werden.

Ich habe schon alle "verdächtige" .dll's aus der SKD herauskopiert und in das Applikationsverzeichnis kopiert: kein Erfolg.

Ich habe auch schon alle Qt-Links aus der "path"-Variablen herausgelöscht: kein Erfolg. Es gibt auch keinen Fehler oder sonst noch was: das Programm läuft anstandslos durch.

Das prickelnde an dieser Geschichte ist die Tatsache, dass von dem Dutzend Bilder, die bearbeitet werden sollen das eine oder andere doch noch richtig erkannt wird.

Ich bin mit meinem Latein am Ende.

Hoffentlich ist jemand hier kluger, als ich.

Edit:

gut sich ausgekotzt zu haben: als ich damit fertig war, viel mir ein, dass ich noch nicht überprüft habe, ob die Datei überhaupt richtig geöffnet wird. Und siehe da:

pixmap.load(pictPathName );

liefert ein "false" zurück.

Ich wüsste gerne, warum, denn der Pfad und Dateiname stimmen...
Zwei Tragödien gibt es im Leben: die eine - nicht zu bekommen, was das Herz wünscht, und die andere: es doch zu bekommen. (Oscar Wilde)
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Re: QPixmap liefert auf anderem Rechner .width=0 und .heigth

Beitrag von Troll.Soft »

Moin,
hast Du mal überprüft, ob der Dateiname stimmt z.B.: mit QFile exist?
tschüß
Troll.Soft
harry_m
Beiträge: 74
Registriert: 26. April 2010 23:16

Re: QPixmap liefert auf anderem Rechner .width=0 und .heigth

Beitrag von harry_m »

Ja, habe ich: es wird erst versucht, die Datei zu öffnen, wenn zuvor ermittelt wurde, dass diese überhaupt existiert.

Das war auch der Grund, warum ich das Ergebnis der "load"-Operation erst gar nicht ausgewertet habe: wie man sieht, war es ein Fehler anzunehmen, dass eine bereits existierende Datei auf jeden Fall geöffnet werden kann.

Ich habe eine dunkle Vorahnung: es wird an den Rechten liegen. Denn ich habe keine Ahnung, was unsere Systemverwalter in die Domänen-Loginscripte so alles geschrieben haben. (Das ist unter anderem auch ein Grund, warum die SDK in einer VM läuft...)
Zwei Tragödien gibt es im Leben: die eine - nicht zu bekommen, was das Herz wünscht, und die andere: es doch zu bekommen. (Oscar Wilde)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QPixmap liefert auf anderem Rechner .width=0 und .heigth

Beitrag von franzf »

harry_m hat geschrieben:Dachte ich mir, denn in der Qt-Hilfe steht, dass ".jpg" und ".png" standardmäßig (sprich ohne PlugIns) unterstützt werden.
Nur png geht ohne separatem Plugin. jpeg braucht eben schon ein imageformat-plugin. Pack das mal korrekt mit dazu, dann wird es auch gehen.
harry_m
Beiträge: 74
Registriert: 26. April 2010 23:16

Re: QPixmap liefert auf anderem Rechner .width=0 und .heigth

Beitrag von harry_m »

Interessant...

In der Online Hilfe ist zu lesen:

"...The complete list of supported file formats are available through the QImageReader::supportedImageFormats() and QImageWriter::supportedImageFormats() functions. New file formats can be added as plugins. By default, Qt supports the following formats:..."

Und darunter sind .bmp, .gif, jpg, jpeg, .png und noch ein paar andere aufgelistet.

Es ist auch so, dass ich auf dem Host den "Dependency Walker" gestartet und die Abhängigkeiten der Applikation überprüft habe: es gab keinen Unterschied zu der VM...

Außerdem habe ich auf der Entwicklungsmaschine probeweise alle Qt-Einträge aus der Umgebung und der "Path"-Variablen entfernt... Ich war der Meinung, dass es in diesem Fall auf dieser Maschine genau so falsch laufen soll, wie es auf dem Host... Dem war nicht so.
Zwei Tragödien gibt es im Leben: die eine - nicht zu bekommen, was das Herz wünscht, und die andere: es doch zu bekommen. (Oscar Wilde)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QPixmap liefert auf anderem Rechner .width=0 und .heigth

Beitrag von franzf »

"By Default Qt supports" heißt nur, dass Qt für die Formate Unterstützung mitbringt. In den meisten Fällen heißt "Unterstützung" eben "Plugin".
Hast du dir schonmal "QImageReader::supportedImageFormats()" ausgeben lassen? Und noch besser: direkt per QImageReader laden und sich den error/errorString ausgeben lassen, wenns nicht klappt.
Markus
Beiträge: 105
Registriert: 31. Januar 2005 16:21

Re: QPixmap liefert auf anderem Rechner .width=0 und .heigth

Beitrag von Markus »

harry_m hat geschrieben: Aber ich habe ja fleißig gelesen: das berühmt-berüchtigte "Plugin"-Problem stand im Verdacht. Dachte ich mir, denn in der Qt-Hilfe steht, dass ".jpg" und ".png" standardmäßig (sprich ohne PlugIns) unterstützt werden.

Ich habe schon alle "verdächtige" .dll's aus der SKD herauskopiert und in das Applikationsverzeichnis kopiert: kein Erfolg.
Die Plugindatei für JPEGs "qjpeg4.dll" muss in das Unterverzeichnis "imageformats" ausgehend vom Applikationsverzeichnis und nicht direkt in das Applikationsverzeichnis.
harry_m
Beiträge: 74
Registriert: 26. April 2010 23:16

Re: QPixmap liefert auf anderem Rechner .width=0 und .heigth

Beitrag von harry_m »

Franz, du hast sehr wohl Recht.

Meine Fragen entstehen, weil ich wirklich nach bestem Wissen und gewissen versucht habe durch Lesen aller möglichen Unterlagen meinen Fehler zu finden.

Und bin gescheitert.

Meine Applikation funktioniert bereits. Aber der Zeitverlust ist in diesem Fall (bezogen auf die tatsächliche Komplexität der Aufgabe) schlichtweg nicht zu rechtfertigen. Es fängt schon damit an, dass der Fehler sich nicht durch Absturz oder irgendwelche andere Schwierigkeiten zeigt, sondern durch simple "Fehlfunktion". D.h. alleine schon darauf kommen dauert eine Weile: weil man eben an der falschen Stelle sucht.

Dieses Problem hat offensichtlich praktisch jeder, der damit zum ersten mal Konfrontiert ist.

Ich werde wohl Unter "Häufig auftretende Probleme" einen neuen Thread aufmachen, und versuche es aus meiner Sicht zu beschreiben. Offensichtlich sind nicht für mich die Trolltech bzw. Nokia Anleitungen nicht ziel führend: sonst würde die Frage hier (und in den anderen Qt-Foren!!!) nicht so oft auftauchen. Was frustrierend ist: auf eine richtig ausführliche Anwort bin ich trotz allem Fleiß beim Suchen nicht gestoßen.

Ich hoffe, du wirfst dort auch mal ein Auge drauf.

Danke!

Gruß
Harry
Zwei Tragödien gibt es im Leben: die eine - nicht zu bekommen, was das Herz wünscht, und die andere: es doch zu bekommen. (Oscar Wilde)
harry_m
Beiträge: 74
Registriert: 26. April 2010 23:16

Re: QPixmap liefert auf anderem Rechner .width=0 und .heigth

Beitrag von harry_m »

Markus hat geschrieben:...Die Plugindatei für JPEGs "qjpeg4.dll" muss in das Unterverzeichnis "imageformats" ausgehend vom Applikationsverzeichnis und nicht direkt in das Applikationsverzeichnis.
Jetzt weiß ich es auch: später habe ich diesen Satz sogar in der Nokia-Anleitung gefunden: zuvor habe ich ihn wohl übersehen.
:D

Gruß
Harry
Zwei Tragödien gibt es im Leben: die eine - nicht zu bekommen, was das Herz wünscht, und die andere: es doch zu bekommen. (Oscar Wilde)
Antworten