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