PYQT 保存JPG图片到SQLITE的BLOB

最近工作上需要,把一些报销凭证保存,本来是建个目录保存,后来想用SQLITE 保存,比较方便查找
网上查了些资料,自己整理如下:`
Sqlite的BLOB类型对应于QT的QByteArray类型。想将数据以二进制的形式存储在Sqlite中,则需要先将数据转成QByteArray。
**

从JPG文件写入BLOB 代码如下:

**

with open(“xxxx.jpg","rb") as f:
    img = f.read()

ba = QByteArray()
bf = QBuffer(ba)
bf.open(QIODevice.WriteOnly)
bf.write(img)
# 这里 data 是BLOB 类型,type 数据类型,我想以后加入PDF,或其它文件
sql = "insert into voucher (type,data) values('JPG',:pic)"
self.query.prepare(sql)
self.query.bindValue(":pic", ba )
self.query.exec()

BLOB到 Qpixmap

	sql = "select data from voucher where ID= ? "
    # key 是关键字 
    query = QSqlQuery()
    query.prepare(sql)
    query.bindValue(0, key)
    query.exec_()
    query.first()
    ba = QByteArray()
    ba.append(query.value(0))
    bf = QBuffer(ba)
    bf.open(QIODevice.ReadOnly)
    imgreader = QImageReader(bf)
    img = QImage(imgreader.read())
    pix = QPixmap(img) 

你可能感兴趣的:(PYQT 保存JPG图片到SQLITE的BLOB)