将 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_())