我有以下代码,该代码从磁盘加载图像并尝试将其缩小到30 x30。稍后,我将标签添加到gridlayout。不幸的是,图像没有按比例缩小到预期的大小,因此网格布局中的所有单元格都有不同的大小。
pixmap = QtGui.QPixmap(filename)
pixmap.scaled(QtCore.QSize(30,30), QtCore.Qt.KeepAspectRatio, QtCore.Qt.FastTransformation)
self.L.append(pixmap)
lbl = QtGui.QLabel(self)
lbl.setPixmap(pixmap)
lbl.setScaledContents(True)
column=len(self.L)
self.ui.gridLayout.addWidget(lbl,0,column,Qt.AlignLeft | Qt.AlignTop)
最佳答案
您确定pixmap.scaled
是否对图像进行了原位转换?我本来希望它返回一个新的,按比例缩放的图像-将其分配给变量并使用它。
根据this documentation:
返回图像的缩放副本。使用指定的转换模式,将返回的图像缩放到给定的高度。自动计算像素图的宽度,以便保留像素图的宽高比。
因此,我想您应该这样做:
pixmap = QtGui.QPixmap(filename)
# FIXED:
scaled_pixmap = pixmap.scaled(QtCore.QSize(30,30), QtCore.Qt.KeepAspectRatio, QtCore.Qt.FastTransformation)
self.L.append(scaled_pixmap) # FIXED
lbl = QtGui.QLabel(self)
lbl.setPixmap(pixmap)
lbl.setScaledContents(True)
column=len(self.L)
self.ui.gridLayout.addWidget(lbl,0,column,Qt.AlignLeft | Qt.AlignTop)
关于python - 缩小图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11360744/