【发布时间】:2015-09-01 21:33:32
【问题描述】:
这是我的问题。
我正在使用 qrcode 和 PyQt4 构建一个简单的 QR 码生成器。特别是,此应用程序在QLabel 的QPixmap 内显示生成的二维码图像。问题是,据我所知,qrmodule 只允许将生成的图像保存到文件中。我试图访问qrcode 的内部工作,但这有点令人费解。
您知道是否可以通过将生成的图像保存在文件流中来公开图像,例如来自tempfile.TemporaryFile() 的文件流?否则我只能通过将其保存在真实文件中然后加载来插入二维码。例如
import qrcode as q
from PyQt4 import QtGui
filename = 'path/to/file.png'
img = q.make('Data')
img.save(filename)
pixmap = QtGui.QPixmap(filename)
编辑 1
我尝试通过以下方式使用答案中提出的PIL.ImageQt.ImageQt 函数
import sys
import qrcode as qr
from PyQt4 import QtGui
from PIL import ImageQt
a = QtGui.QApplication(sys.argv)
l = QtGui.QLabel()
pix = QtGui.QPixmap.fromImage(ImageQt.ImageQt(qr.make("Some test data")))
l.setPixmap(pix)
l.show()
sys.exit(a.exec_())
然而结果并不一致。这是使用上述方法得到的结果
这是使用qrcode.make('Some test data').save('test2.png')的结果
我错过了什么吗?据我了解,ImageQt 函数是QImage 的子类,实际上我没有遇到运行时错误,但图像已损坏。
【问题讨论】: