QtImageReader

Alles rund um die Programmierung mit Qt
Antworten
multimedial.de
Beiträge: 7
Registriert: 18. März 2010 17:15
Wohnort: Gummersbach
Kontaktdaten:

QtImageReader

Beitrag von multimedial.de »

Hallo,

ich schreibe gerade ein Programm zur Erstellung von Kacheln für den 3D Globus WorldWind.

Dazu wird eine Source-Bitmap eingelesen und dann so vergrößert, dass Sie dem Ziellevel entspricht. Dann werden daraus quadratische Kacheln erzeugt.

Mein Problem ist nun, dass der QtImageReader ab einer bestimmten Skalierungsgröße ein Signal wirft, welches QtCreator anhält.

Es wird anscheinend keine Exception ausgelöst, sondern in der QtSmoothScaler::scale passiert irgendwas, was das Programm anhält.

Im Debugger steht dann "Angehalten: signal-received"

Ich hatte es vorher anders programmiert - bevor ich QtImageReader eingesetzt habe, hatte ich die Bitmap komplett eingelesen, und dann versucht mittels Skalierung auf die neue Größe zu bringen, mit dem Ergebnis, dass dem Rechner manchmal der Speicher ausging.

Ich habe hier Kachelgrößen von 20480 mal 10240 Pixel - wenn ich versuche, eine Bitmap dieser Größe zu erzeugen, dann steigt Qt irgendwann aus, was auch ganz ok und normal ist.

Deswegen der Einsatz von QtImageReader. Damit kann ich Dinge tun wie folgt:

Code: Alles auswählen

QImageReader reader(pPathToImage);
reader.setScaledSize(QSize(imageWidth, imageHeight));

        ////////////////////////////////////////////////////////////////
        // let's see if we can get the whole new scaled image
        ////////////////////////////////////////////////////////////////
        QImage* currentImg=new QImage();

        reader.read(currentImg);
Leider steigt nun Qt bei der "reader.read()" Anweisung mit dem "signal-received" aus...

Kann mir da jemand helfen?

Gruss,
C
arj
Beiträge: 45
Registriert: 1. Juni 2009 13:51
Wohnort: Ihringen

Beitrag von arj »

Auch wenn ich deine Fragestellung nicht ganz verstanden habe, vielleicht helfen dir die Funktionen
canRead() und supportedImageFormats() des QImageReader weiter?

Zusatz:
Jetzt hab ichs verstanden ... Vermutlich wird dir das also nicht weiterhelfen ... sorry :?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QtImageReader

Beitrag von franzf »

multimedial.de hat geschrieben:Im Debugger steht dann "Angehalten: signal-received"
Steht denn nicht dabei welches SIGNAL das ist? Bekommst du im Debugger einen Backtrace?
Im übrigen ist dein Image ein null-Image, also nicht gültig, wenn du den Code exakt so verwendest wie unten angegeben. Gib dem Konstruktor mal ne ordentliche Größe mit.
Außerdem würde ich das QImage nicht mit new anlegen (außer du brauchst das so unbedingt).

Code: Alles auswählen

QImage image(newSize);
imageReader.read(&image);
multimedial.de
Beiträge: 7
Registriert: 18. März 2010 17:15
Wohnort: Gummersbach
Kontaktdaten:

Beitrag von multimedial.de »

Danke für die Antworten. Der Hinweis mit der Größe des Bildes ist sinnvoll, ja, das werde ich ausprobieren.

ich bin leider gerade nicht am Rechner, aber ich melde mich, sobald ich das ausprobiert habe. Danke auf jeden Fall für die Rückmeldung.
Antworten