How to render a part of QGraphicsScene and save It as image file PyQt5(如何渲染 QGraphicsScene 的一部分并将其保存为图像文件 PyQt5)
问题描述
假设我有来自加载图像的 QGraphicsPixmapItem,它被添加到 QGraphicsScene.假设我将在场景中添加几个 QGraphicsPolygonItem.如何将场景的一部分渲染为全尺寸图像,同时使用不在空白区域中的多边形和保存该区域作为图像文件.强>
Suppose I have QGraphicsPixmapItem from loaded image which is added to QGraphicsScene. And suppose I'll add several QGraphicsPolygonItem's on scene. How I can render a part of the scene as full-size image both with polygons that are not in blank area and save this area as image file. 
class ImageView(QtWidgets.QGraphicsView):
    def __init__(self, parent):
        super(ImageView, self).__init__(parent)
        self.setFocus()
        self._zoom = 0
        self._empty = True
        self.scene = QtWidgets.QGraphicsScene(self)
        self._image = QGraphicsPixmapItem()
        self.scene.addItem(self._image)
        self.setScene(self.scene)
        # some other actions
        foo()
    def fitInView(self):
        # custom fit in view and scaling
        bar()
    # some other methods
class MainWindow(QtWidgets.QWidget):
    def __init__(self):
        self.viewer = ImageView(self)
        foo()
    def _save_image(self):
        # method that I need to implement
        pass
推荐答案
未经测试,但使用 QGraphicsScene::render 你应该可以做类似...
Untested, but using QGraphicsScene::render you should be able to do something like...
def _save_image(self):
    # Get region of scene to capture from somewhere.
    area = get_QRect_to_capture_from_somewhere()
    # Create a QImage to render to and fix up a QPainter for it.
    image = QImage(area.size(), QImage.Format_ARGB32_Premultiplied)
    painter = QPainter(image)
    # Render the region of interest to the QImage.
    self.scene.render(painter, image.rect(), area)
    painter.end()
    # Save the image to a file.
    image.save("capture.png")
                        这篇关于如何渲染 QGraphicsScene 的一部分并将其保存为图像文件 PyQt5的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何渲染 QGraphicsScene 的一部分并将其保存为图像文件 PyQt5
				
        
 
            
        基础教程推荐
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
 - 求两个直方图的卷积 2022-01-01
 - PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
 - 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
 - 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
 - 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
 - 修改列表中的数据帧不起作用 2022-01-01
 - 在Python中从Azure BLOB存储中读取文件 2022-01-01
 - Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
 - 包装空间模型 2022-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
				
				
				
				