Страницы

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

пятница, 14 февраля 2020 г.

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

#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_()) Скриншот:

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

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