如何裁剪图像并保存?

问题描述 投票:0回答:2

我已在QHBoxLayout中打开图像。我需要裁剪打开的图像并保存裁剪后的图像。如何在PySide中做到这一点?

import sys
from PySide import QtGui, QtCore

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):      

        hbox = QtGui.QHBoxLayout(self)
        pixmap = QtGui.QPixmap("re.png")

        lbl = QtGui.QLabel(self)
        lbl.setPixmap(pixmap)


        self.rect = QtCore.QRect()


        hbox.addWidget(lbl)
        self.setLayout(hbox)

        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('Open Image')
        self.show()   
        # Tried here to implement Qpen      
        #self.painter = QtGui.QPainter(self)    
        #self.painter.setPen(QtGui.QPen(QtCore.Qt.black, 1, QtCore.Qt.SolidLine));
        #self.painter.drawRect(self.rect);
def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()
python pyqt pyside crop
2个回答
6
投票

我建议使用类别QtGui.QRubberBand选择要裁剪的图像区域。 (PySide还实现了与PyQt相同的功能)

首先,实现方法QtGui.QRubberBandmouseMoveEvent (self, QMouseEvent)mouseReleaseEvent (self, QMouseEvent)(在mousePressEvent (self, QMouseEvent)类参考中阅读更多信息)。

接下来,通过使用QtGui.QRubberBand获得QtGui.QRubberBand的最后一个几何体来裁剪图像。

最后,使用QRect QWidget.geometry (self)通过从裁剪区域放置几何图形来裁剪图像。并使用QRect QWidget.geometry (self)保存图像。

示例;

QPixmap QPixmap.copy (self, QRect rect = QRect())

1
投票

我将使用QImage的QPixmap QPixmap.copy (self, QRect rect = QRect())方法:

bool QPixmap.save (self, QString fileName, str format = None, int quality = -1)
© www.soinside.com 2019 - 2024. All rights reserved.