Seite 1 von 1
bild zu groß, pixmap.scale(sx,sy) dauert zu lange
Verfasst: 25. Juli 2006 08:52
von Maik
hi,
möchte ein bild zoomen. wenn ich dafür scale neutze dauert das zu lange.
bild hat knapp 5mb. gibt es ne möglichkeit einzelne zoomstufen zwischenzuspeichern und die dann jeweils abzurufen? wenn ja wie speicher ich die .png mit scalefaktor?
oder bietet qt noch andere möglichkeiten? wer hat damit schon erfahrung.
und nein, kann das bild nicht kleiner machen
oder wäre es besser und schneller ein tiff bild zu benutzen?
danke
gruß maik
Verfasst: 25. Juli 2006 09:02
von slash-ex
Ich habe sowas noch nicht probiert, aber im Tutorial arbeiten die mit adjustSize()... und wenn du ein Label benutzt klappt wahrscheinlich auch resize().. probier einfach mal ein bisschen.
Verfasst: 25. Juli 2006 09:08
von Maik
damit ändere ich die größe das widgets o. ausschnitts z.bsp. aber das bild an sich wird nicht gezoomt.
trotzdem danke
Verfasst: 25. Juli 2006 09:46
von Christian81
Dann halte dir ein paar QImages mit verschiedenen Skalierungen im Speicher vor. Ein Bild von 1MB auf 0.8MB zu skalieren geht wesentlich schneller als es von %MB auf 0.8MB zu skalieren. Also quasi dein eigener Pixmapcache.
oder wäre es besser und schneller ein tiff bild zu benutzen?
Bitte überleg dir nochmal was Du da geschrieben hast !
Verfasst: 25. Juli 2006 10:04
von Maik
was ist an der frage verwirrend?
vielleicht kann man mit tiff bildern besser umgehen?! zwar brauche ich dann tiffio aber das wäre ja nicht das problem. oder was gefällt dir an dem satzteil nicht?
und zu dem setLimitCache. wie benutze ich das? so gehts z.bsp. nicht:
if (!QPixmapCache::find("Karte", Karte)) {
QPixmapCache::setCacheLimit(6000);
Karte.load("/home/bachmann/img/map/munchen.png");
QPixmapCache::insert("Karte", Karte);}
Verfasst: 25. Juli 2006 10:12
von Christian81
Maik hat geschrieben:was ist an der frage verwirrend?
vielleicht kann man mit tiff bildern besser umgehen?! zwar brauche ich dann tiffio aber das wäre ja nicht das problem. oder was gefällt dir an dem satzteil nicht?
Im Speicher (QImage/QPixmap) gibts kein tiff und kein png...
Was soll der Codeausschnitt sagen? Ich dachte du willst skalieren? Dann sollte man die unterschiedlichen Skalierungen dort ablegen, oder? Und was heisst 'geht nicht'?
"The cache becomes full when the total size of all pixmaps in the cache exceeds cacheLimit(). The initial cache limit is 1024 KByte (1 MByte); it is changed with setCacheLimit(). A pixmap takes roughly width*height*depth/8 bytes of memory."
Verfasst: 25. Juli 2006 10:23
von Maik
der code sollte zeigen das ich den cachelimit nicht ändern kann. bzw nicht so wie ich mir das vorstelle. und wenn ich den nicht einmal ändern kann brauche ich meine scalebilder nicht in ihm speichern. also muss ich zu aller erst den code den ich da gezeigt hatte zum laufen bringen oder nicht!
und kannst du mir sagen wieso ich den cache nicht hochsetzen kann? oder verstehe ich das mit dem setCacheLimit falsch?
danke
maik
Verfasst: 25. Juli 2006 10:47
von Christian81
Wie erkennst du dass der Cache nicht hochgesetzt wurde? mal mit
http://doc.trolltech.com/3.3/qpixmapcache#cacheLimit nachgeschaut oder wird dein Bild einfach nicht gespeichert?
Wie gross ist Dein Bild überhaupt? Deswegen habe ich Dir den letzten Satz aus der Doku kopiert...
Verfasst: 1. August 2006 23:01
von lepsai
Hm... manchmal liest man wirklich Beiträge, da kann man sich nur wegschmeißen...
@Maik:
Um die Bildanzeige zu skalieren, braucht man keine Operationen auf dem QImage, sondern QWMatrix und QPainter...
P.S.
Die Idee mit TIFF ist Nobelpreisverdächtig...
