将 QGraphicsView 转换应用于保存的图像
Applying QGraphicView transform to saved image
假设我在 QGraphicsView
中加载了一个 QPixmap
,该 QGraphicsView
已经缩放了 2 倍,因此现在图像的所有边都被裁剪了。我想拍摄剪裁后的图像并将其另存为新的图像文件,以便它与 QGraphicsView
中看到的相匹配。我知道 QPixmap
有一个 save() 函数,但如果不重新应用视图转换,它与原来的没有区别。
如何实现?谢谢。
viewport()
是在 QGraphicsView
中直观显示的小部件,因此您必须使用 render()
保存该小部件的图像。
import sys
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication(sys.argv)
view = QtGui.QGraphicsView()
scene = QtGui.QGraphicsScene()
view.setScene(scene)
scene.addPixmap(QtGui.QPixmap("/path/of/image"))
view.scale(4, 4)
view.show()
pixmap = QtGui.QPixmap(view.viewport().size())
view.viewport().render(pixmap)
pixmap.save("test.png")
sys.exit(app.exec_())
假设我在 QGraphicsView
中加载了一个 QPixmap
,该 QGraphicsView
已经缩放了 2 倍,因此现在图像的所有边都被裁剪了。我想拍摄剪裁后的图像并将其另存为新的图像文件,以便它与 QGraphicsView
中看到的相匹配。我知道 QPixmap
有一个 save() 函数,但如果不重新应用视图转换,它与原来的没有区别。
如何实现?谢谢。
viewport()
是在 QGraphicsView
中直观显示的小部件,因此您必须使用 render()
保存该小部件的图像。
import sys
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication(sys.argv)
view = QtGui.QGraphicsView()
scene = QtGui.QGraphicsScene()
view.setScene(scene)
scene.addPixmap(QtGui.QPixmap("/path/of/image"))
view.scale(4, 4)
view.show()
pixmap = QtGui.QPixmap(view.viewport().size())
view.viewport().render(pixmap)
pixmap.save("test.png")
sys.exit(app.exec_())