Python PyQt Pixmap缩放,保留分辨率以备将来使用

Python PyQt Pixmap缩放,保留分辨率以备将来使用,python,pyqt,pixmap,Python,Pyqt,Pixmap,我正在QTableWidget的一个单元格中创建一个带有pixmap的标签,我希望能够“放大”和“缩小”表。我通过使用.scaled(width,height)缩放pixmap来实现这一点,这非常好,但是一旦缩小pixmap,我就无法再次将其缩放并保持原始分辨率。换句话说,一旦它被绘制成更小的尺寸,我就不再有这些像素供以后使用,所以当我放大它时,我会对图像进行重新采样 我怎样才能在有效保持图像分辨率的同时,使其能够“放大”并再次缩小pixmap?scaled()完全是错误的方法吗?理论上,每次放

我正在QTableWidget的一个单元格中创建一个带有pixmap的标签,我希望能够“放大”和“缩小”表。我通过使用
.scaled(width,height)
缩放pixmap来实现这一点,这非常好,但是一旦缩小pixmap,我就无法再次将其缩放并保持原始分辨率。换句话说,一旦它被绘制成更小的尺寸,我就不再有这些像素供以后使用,所以当我放大它时,我会对图像进行重新采样

我怎样才能在有效保持图像分辨率的同时,使其能够“放大”并再次缩小pixmap?scaled()完全是错误的方法吗?理论上,每次放大和缩小时,我都可以引用原始文件,并以所需的比例创建一个新的pixmap,但这假设文件总是可以访问的(在我的情况下可能不是这样)

编辑: 好的,根据评论,我需要为每个缩放周期创建一个新的pixmap副本,现在的问题是如何做到最干净,如何在不编辑原始的情况下创建一个新的pixmap实例?以下是我现在所掌握的基本知识的一个片段:

global pixArray
pixArray = []

# pix array
label = QtGui.QLabel()
pic = QtGui.QPixmap(imageFile)
label.setPixmap(pic)
#toss this label into the master array for later
pixArray.append(label)
# apply scaled image
label = pixArray[len(pixArray)-1]
picScaled = label.pixmap()
label.setPixmap(picScaled.scaled(rowWidth, rowHeight))

# so now the user wants to scale everything, rowWidth and rowHeight have changed:
for column in range(self.table.columnCount()):
    # resize the cells
    self.table.setColumnWidth(column, rowWidth)
    self.table.setRowHeight(0, rowHeight)
    # resize the pixmap label
    item = self.table.cellWidget(0, column)
    label = pixArray[column]
    pic = label.pixmap()
    # at this point I am actually scaling the original pixmap, how to create a copy?
    item.setPixmap(pic.scaled(rowWidth, rowHeight))

除非它们太多,以致于内存出现问题,否则我只保留完整大小的pixmap的副本。缩小的版本会进入你的表格小部件,当你想放大时,你会显示(但不转换)完整大小的副本。谢谢Schmuddi,但我对PyQt和Python还比较陌生,所以我需要更多的解释。。。我会有几百张1920x1080的照片,不知道那是什么内存需求。我得到的是,我需要以原始分辨率保留所有像素贴图的数组,然后在调整表的大小时为每个单元格创建一个缩放版本?我试过了,但我遇到了同样的问题,你如何创建一个新的“版本”?缩放是一个有损的转换-它不会干净地往返。你别无选择,只能保留全尺寸图像的副本。我明白了。我在上面添加了一些示例代码,现在我试图弄清楚如何在缩放pixmap时复制它,这样我就不会编辑“master”。可能是一个简单的解决方案,但我现在正在画一个空白。。。