Laden Sie die Blob-Bilddaten in QPixmap

Ich schreibe ein Programm mit PyQt4 für die Front-End-GUI und dieses Programm greift auf eine Back-End-Datenbank zu (die entweder MySQL oder SQLite sein kann). Ich muss einige Bilddaten in der Datenbank speichern und unten ist der Python-Code, mit dem ich Bilddateien (im JPEG-Format) in ein Blob-Datenfeld in der Datenbank importiere:

def dump_image(imgfile):
    i = open(imgfile, 'rb')
    i.seek(0)
    w = i.read()
    i.close()
    return cPickle.dumps(w,1)

blob = dump_image(imgfile)
hex_str = blob.encode('hex') 
# x"%s"%hex_str will be the string inserted into the SQL command

Dieser Teil funktioniert gut. Meine Frage ist, wie man ein QPixmap-Objekt aus den in der Datenbank in PyQt4 gespeicherten Bilddaten erstellt. Mein derzeitiger Ansatz umfasst die folgenden Schritte:

(1) Hex str in der Datenbank - cPickle & StringIO -> PIL Image Object

def load_image(s):
    o = cPickle.loads(s)
    c = StringIO.StringIO()
    c.write(o)
    c.seek(0)
    im = Image.open(c)
    return im

(2) PIL-Bildobjekt -> Temporäre Bilddatei

(3) Temporäre Bilddatei -> QPixmap

Dieser Ansatz funktioniert auch gut. Es wäre jedoch besser, wenn ich keine temporären Bilddateien schreiben / lesen müsste, die die Reaktion des Programms auf Benutzerinteraktionen verlangsamen könnten. Ich denke, ich könnte es gebrauchenQPixmap :: loadFromData () direkt von den in der Datenbank gespeicherten Blob-Daten zu laden und zu hoffen, dass mir hier jemand ein Beispiel zur Verwendung dieser Funktion zeigen kann.

TIA,

Bing

Antworten auf die Frage(3)

Ihre Antwort auf die Frage