#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_()) Скриншот:
Комментариев нет:
Отправить комментарий