我已在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()
我建议使用类别QtGui.QRubberBand
选择要裁剪的图像区域。 (PySide还实现了与PyQt相同的功能)
首先,实现方法QtGui.QRubberBand
,mouseMoveEvent (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())
我将使用QImage的QPixmap QPixmap.copy (self, QRect rect = QRect())
方法:
bool QPixmap.save (self, QString fileName, str format = None, int quality = -1)