正在为前端GUI编写使用PyQt4的程序。 此程序访问后端数据库(MySQL或SQLite )。 必须将图像数据保存到数据库中。 以下是用于将图像文件(JPEG格式)导入数据库中的blob数据字段的Python代码: defdump_image(imgfile ) :
(I=开放(imgfile,' rb ' () ) ) ) ) ) ) ) ) ) 65
I.seek(0) )。
w=i.read ()
i.close () )
returncpickle.dumps(w,1 ) )。
blob=dump_image(imgfile ) )。
hex_str=blob.encode('hex ' ) ) )。
# x ' % s ' % hex _ strwillbethestringinsertedintothesqlcommand
这个部分工作得很好。 我的问题是如何从PyQt4中存储在数据库中的图像数据创建QPixmap对象。 我现在的方法包括以下步骤。
)1)数据库中的十六进制str----cpicklestringio----gt; PIL图像对象defload_image(s ) :
o=cpickle.loads(s ) )。
c=StringIO.StringIO (
c .写入(o ) )。
c.seek(0) )。
im=image.open(c )
return im
)2) PIL图像对象--gt; 临时图像文件
)3)临时图像文件--gt; QPixmap
这个方法也很有效。 但是,如果不需要创建/读取临时图像文件,程序对与用户交互的响应速度可能会降低。 QPixmap:loadFromData ) )可以直接从数据库中存储的blob数据加载。 我希望这里有人能教我如何使用这个函数。
蒂亚
冰