Alles rund um die Programmierung mit Qt
alexQt
Beiträge: 11 Registriert: 13. April 2011 11:12
Beitrag
von alexQt » 20. April 2011 12:21
Hallo,
ich möchte gerne ein bild kleiner machen und benutze
folgenden code:
Code: Alles auswählen
width=200
height=300
size = self._page.mainFrame().contentsSize()
self._page.setViewportSize(size)
image = QImage(self._page.viewportSize(), QImage.Format_ARGB32)
image = image.scaled(width, height, Qt.IgnoreAspectRatio, Qt.FastTransformation)
painter = QPainter(image)
self._page.mainFrame().render(painter)
painter.end()
die ausgabe ist ein bild mit der richtigen größe
200x300
nur ist das bild nicht skaliert, sondern es ist ein ausschnit
vom bild in der größe
ich benutze PyQt4 (python)
Gruß
franzf
Beiträge: 3114 Registriert: 31. Mai 2006 11:15
Beitrag
von franzf » 20. April 2011 15:19
ERST deinen viewport in das Image rendern (da hat es noch die richtige Größe) und DANN skalieren. So wie du das jetzt machst, erstellst du ein Image in der passenden Größe, skalierst es (Ergebnis wie wenn du gleich ein QImage mit 200x300 erstellst) um dann zu rendern.
Ich hoffe du verstehst was ich meine.
alexQt
Beiträge: 11 Registriert: 13. April 2011 11:12
Beitrag
von alexQt » 21. April 2011 13:05
ja ich verstehe dich:
Qt.IgnoreAspectRatio
Code: Alles auswählen
width=200
height=300
size = self._page.mainFrame().contentsSize()
self._page.setViewportSize(size)
image = QImage(self._page.viewportSize(), QImage.Format_ARGB32)
painter = QPainter(image)
self._page.mainFrame().render(painter)
painter.end()
image = image.scaled(width, height, Qt.IgnoreAspectRatio, Qt.FastTransformation)
ich arbeite mit pyqt und habe zu dem Qt.IgnoreAspectRatio, Qt.FastTransformation noch nicht die richtige lösung gefunden.
das mag er so nicht!
Code: Alles auswählen
# image = image.scaled(width,height,aspectRatioMode,transformMode);
# image = image.scaled(width, height)
# image = image.scaled(width, height, Qt.IgnoreAspectRatio, Qt.FastTransformation)
# image = image.scaled(width, height, Qt.AspectRatioMode aspectRatioMode = Qt.IgnoreAspectRatio, Qt.TransformationMode transformMode = Qt.FastTransformation)
# image = image.scaledToHeight(height, mode=Qt.FastTransformation)
# image = image.scaledToWidth(width, mode=Qt.FastTransformation)
# mode = QImage.ScaleMode()
# mode = QImage.ScaleFree
# image = image.scale(width, height, QImage.ScaleFree)
alexQt
Beiträge: 11 Registriert: 13. April 2011 11:12
Beitrag
von alexQt » 21. April 2011 13:25
alles klar habs!
Code: Alles auswählen
img = img.scaled(240, 1331,Qt.Qt.IgnoreAspectRatio, Qt.Qt.FastTransformation)