如何在PyQt4中更改像素图图像的大小?

时间:2017-03-19 14:47:12

标签: python image pyqt qpixmap

first_row = QtGui.QHBoxLayout()

setings_search = QtGui.QVBoxLayout()
search_label = QtGui.QLabel()
search_pixmap = QtGui.QPixmap()
search_pixmap.load('search.png')

#search_pixmap.scaledToWidth(130)
#search_pixmap.scaledToHeight(130)

search_label.setPixmap(search_pixmap)

setings_search.addWidget(search_label)
first_row.addLayout(setings_search)

当我同时使用scaledscaledToWidth/Heigth方法时,图片不会调整大小。 my window

在图片中,我已经展示了我已经拥有的和我想拥有的东西。

当然我可以通过Photoshop改变大小,但我想知道如何以编程方式进行。

2 个答案:

答案 0 :(得分:5)

正如ekhumoro在评论中所说,只需使用QPixmap中的scaled方法之一。

from PyQt4 import QtGui

app = QtGui.QApplication([])

label = QtGui.QLabel()

pixmap = QtGui.QPixmap()
pixmap.load('test.png')
pixmap = pixmap.scaledToWidth(20)
label.setPixmap(pixmap)

label.show()

app.exec_()

给出了正确的尺寸。

enter image description here

答案 1 :(得分:1)

尝试为paintEvent定义QWidget。但是,我只知道如何在绝对位置(pixmapposX)上绘制poxY,不确定相对位置(即在QVBoxLayout中)。< / p>

def paintEvent(self, event):
    qp = QtGui.QPainter()
    search_pixmap = QtGui.QPixmap('search.png')
    qp.drawPixmap(posX, posY, width, height, pixmap.scaled(width, height, transformMode=QtCore.Qt.SmoothTransformation))

其中widthheight是缩放pixmap的尺寸。