Załaduj dane obrazu blob do QPixmap

Piszę program używający PyQt4 do frontowego interfejsu GUI i ten program uzyskuje dostęp do bazy danych zaplecza (która może być MySQL lub SQLite). Muszę przechowywać niektóre dane obrazu w bazie danych, a poniżej kod Pythona, którego używam do importowania plików graficznych (w formacie JPEG) do pola danych typu blob w bazie danych:

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

Ta część działa dobrze. Moje pytanie dotyczy sposobu tworzenia obiektu QPixmap z danych obrazu przechowywanych w bazie danych w PyQt4. Moje obecne podejście obejmuje następujące kroki:

(1) Hex str w bazie danych - cPickle i 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) Obiekt obrazu PIL -> Plik obrazu tymczasowego

(3) Tymczasowy plik obrazu -> QPixmap

Takie podejście działa dobrze. Ale byłoby lepiej, gdybym nie musiał zapisywać / czytać tymczasowych plików obrazów, które mogą spowolnić reakcję programu na interakcje użytkownika. Myślę, że mógłbym użyćQPixmap :: loadFromData () aby bezpośrednio załadować dane blob przechowywane w bazie danych i mieć nadzieję, że ktoś tutaj pokaże mi przykład użycia tej funkcji.

TIA,

Bing

questionAnswers(3)

yourAnswerToTheQuestion