मान लीजिए मेरे पास QGraphicsPixmapItem लोड की गई छवि से है जिसे QGraphicsScene में जोड़ा गया है। और मान लीजिए कि मैं कई QGraphicsPolygonItem दृश्य में जोड़ दूंगा। मैं दृश्य के एक हिस्से को पूर्ण-आकार की छवि के रूप में कैसे प्रस्तुत कर सकता हूं, दोनों पॉलीगॉन के साथ जो खाली क्षेत्र में नहीं हैं और इस क्षेत्र को छवि फ़ाइल के रूप में सहेजें। मजबूत>

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

GUI Example

0
user9307199 26 अक्टूबर 2018, 11:43

1 उत्तर

सबसे बढ़िया उत्तर

परीक्षण नहीं किया गया है, लेकिन QGraphicsScene::render का उपयोग करके आपको यह करने में सक्षम होना चाहिए कुछ ऐसा करो...

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")
0
G.M. 26 अक्टूबर 2018, 10:16