как вывести изображение на экран PyQt5 если изображение храниться в бд в bytes
import sys,sqlite3
from PyQt5.QtWidgets import QWidget, QApplication,QPushButton
from PyQt5.QtGui import QPainter, QColor, QFont,QIcon
from PyQt5.QtCore import Qt,QSize
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
conn = sqlite3.connect("test.db")
connect = conn.execute("SELECT Data from Images")
for row in connect:
self.label_im_qrcode = QLabel()
import io, qrcode
b = io.BytesIO(row[0])
img.save(b, 'png')
data = b.getvalue()
pixmap = QPixmap()
pixmap.loadFromData(data)
self.label_im_qrcode.setPixmap(pixmap)
self.setGeometry(300, 300, 280, 170)
self.setWindowTitle('Draw text')
self.show()
if __name__ == '__main__':
con = sqlite3.connect('test.db')
cur = con.cursor()
fin = open('woman.jpg', "rb")
img = fin.read()
binary = sqlite3.Binary(img)
cur.execute("INSERT INTO Images(Data) VALUES (?)", (binary,))
con.commit()
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Ответ
Воспользоваться нужными методами: QImage.loadFromData или QImage::fromData
Для QPixmap есть метод QPixmap.loadFromData
Пример из qrcode_gui
text = self.input_text.toPlainText()
img = qrcode.make(text)
import io
b = io.BytesIO()
img.save(b, 'png')
data = b.getvalue()
pixmap = QPixmap()
pixmap.loadFromData(data)
self.label_im_qrcode.setPixmap(pixmap)
Больше моих примеров
После обновления вопроса:
Показываю пример добавления в базу данных SQLite картинки и отображения ее на виджете Qt:
import sys
import sqlite3
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
if __name__ == '__main__':
con = sqlite3.connect('test.sqlite')
cur = con.cursor()
cur.execute('''
CREATE TABLE IF NOT EXISTS Images (
Data BLOB
)
''')
con.commit()
with open('capture.png', mode='rb') as f:
binary = sqlite3.Binary(f.read())
cur.execute("INSERT INTO Images(Data) VALUES (?)", (binary,))
con.commit()
app = QApplication([])
w = QWidget()
layout = QVBoxLayout()
w.setLayout(layout)
for (img_data,) in con.execute("SELECT Data from Images"):
pixmap = QPixmap()
pixmap.loadFromData(img_data)
label = QLabel()
label.setPixmap(pixmap)
layout.addWidget(label)
w.show()
sys.exit(app.exec_())
Скриншот:
Комментариев нет:
Отправить комментарий