我目前正在使用PyQt4和qrcode4.0.4。
from PyQt4 import QtGui, QtCore
from PIL.ImageQt import ImageQt
import qrcode
class QRLabel(QtGui.QLabel):
def __init__(self, text=""):
super(QRLabel, self).__init__()
self.setCode(text)
def setCode(self, text=""):
self.text = text
qrImg = qrcode.make(text)
imgQt = ImageQt(qrImg.convert("RGB")) # keep a reference!
pixm = QtGui.QPixmap.fromImage(imgQt)
self.setPixmap(pixm.scaled(self.size(),QtCore.Qt.KeepAspectRatio))
如您所见,在屏幕上显示图像之前,需要克服几个障碍。 QR码从RGBA PIL图像开始,将其转换为RGB,然后转换为PIL ImageQt对象,然后转换为QPixmap,然后将其放置在具有缩放修复功能的QLabel上。
如果未显式存储imgQt引用,则在加载窗口小部件时会产生垃圾。
我的问题:有什么我可以做些改善的,因为似乎涉及很多转换。