我正在使用PyQt4编写一个用于前端GUI的程序,该程序访问后端数据库(可以是
MySQL或SQLite).我需要在数据库中存储一些图像数据,下面是我用来将图像文件(JPEG格式)导入数据库中的blob数据字段的
Python代码:
def dump_image(imgfile):
i = open(imgfile, 'rb')
i.seek(0)
w = i.read()
i.close()
return cPickle.dumps(w,1)
blob = dump_image(imgfile)
hex_str = blob.encode('hex')
# x"%s"%hex_str will be the string inserted into the SQL command
这部分工作正常.我的问题是如何从PyQt4中存储在数据库中的图像数据创建QPixmap对象.我目前的方法涉及以下步骤:
(1)数据库中的Hex str – cPickle& StringIO – > PIL图像对象
def load_image(s):
o = cPickle.loads(s)
c = StringIO.StringIO()
c.write(o)
c.seek(0)
im = Image.open(c)
return im
(2)PIL图像对象 – >临时图像文件
(3)临时图像文件 – > QPixmap的
这种方法也很好.但是如果我不必编写/读取临时图像文件会更好,这可能会减慢程序对用户交互的响应速度.我想我可以使用QPixmap::loadFromData()直接从数据库中存储的blob数据加载,并希望这里有人可以告诉我如何使用此功能的示例.
TIA,
兵