#python #python_3x #pyqt5
как вывести изображение на экран 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_())
Ответы
Ответ 1
Воспользоваться нужными методами: 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_()) Скриншот:
Комментариев нет:
Отправить комментарий