Страницы

Поиск по вопросам

среда, 24 апреля 2019 г.

Отображение изображение на экран PyQt5 доступных в bytes

как вывести изображение на экран 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_())
Скриншот:

Комментариев нет:

Отправить комментарий